题解 | #牛群的配对# 动态规划

牛群的配对

https://www.nowcoder.com/practice/c6677c8bd0d946e191051f19100c5cf5

类似最长回文子串,稍微变形一下即可

定义 dp[j][i] 为字符串 j到i 的匹配结果

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @return bool布尔型
     */
    bool isValidPairing(string s) {
        int n = s.size();
        vector<vector<bool>> dp(n, vector<bool>(n, false));
        for (int i = 1; i < n; i++) {
            for (int j = 0; j < i; j++) {
                // 当这一片段长度为奇数时,匹配不可能成功
                if ((i - j + 1) % 2 != 0) {
                    dp[j][i] = false;
                    continue;
                }
                // 当片段长度为2时单独判断
                // 当片段长度大于2时,外层的匹配结果还要兼顾内层的结果
                if (i - j == 1 && ((s[i] == 'B' && s[j] == 'A') ||
                                   (s[i] == 'D' && s[j] == 'C'))) {
                    dp[j][i] = true;
                } else {
                    if ((s[i] == 'B' && s[j] == 'A') || (s[i] == 'D' && s[j] == 'C')) {
                        dp[j][i] = dp[j + 1][i - 1];
                    }
                }
            }
        }
        return dp[0][n - 1];
    }
};

时间复杂度:O(n^2),双重循环遍历字符串s

空间复杂度:O(n^2),存储二维数组dp

全部评论

相关推荐

等闲_:小红书基本不区分日常和暑期,你是应届实习时间够了就有转正机会,只要部门有hc
点赞 评论 收藏
分享
axiom15:校友,我感觉你这个简历去华子暑期实习随便去了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务