目录
题目
解法一
题目
待添加
解法一
bool isInterleave(char* s1, char* s2, char* s3) {const int len1 = strlen(s1);const int len2 = strlen(s2);const int len3 = strlen(s3);if (len1 + len2 != len3) {return false;}if (len1 < len2) {return isInterleave(s2, s1, s3);}bool dp[len2 + 1];dp[0] = true;for (int j = 1; j <= len2; j++) {dp[j] = s2[j - 1] == s3[j - 1] && dp[j - 1];}for (int i = 1; i <= len1; i++) {dp[0] = s1[i - 1] == s3[i - 1] && dp[0];for (int j = 1; j <= len2; j++) {dp[j] = (s1[i - 1] == s3[i + j - 1] && dp[j]) ||(s2[j - 1] == s3[i + j - 1] && dp[j - 1]);}}return dp[len2];
}