字符串的交错组成
来源:互联网 发布:软件开发 私活 价格 编辑:程序博客网 时间:2024/05/21 06:16
/**************************************************************************************
*description:字符串的交错组成
* 给定三个字符串str1、str2、aim,如果aim包含且仅包含来自
* str1和str2的所有字符,且属于str1的字符之间保持其在str1中顺序,
* 属于str2的字符也保持其在str2中的顺序,称aim是str1和str2的交错组成
* 实现函数,判断aim是否是str1和str2的交错组成
*description:字符串的交错组成
* 给定三个字符串str1、str2、aim,如果aim包含且仅包含来自
* str1和str2的所有字符,且属于str1的字符之间保持其在str1中顺序,
* 属于str2的字符也保持其在str2中的顺序,称aim是str1和str2的交错组成
* 实现函数,判断aim是否是str1和str2的交错组成
**************************************************************************************/
#include<iostream>#include<string>#include<vector>using namespace std;//方法:时间复杂度O(M*N),空间复杂度O(M*N)//经典动态规划问题,创建布尔数组dp[M+1][N+1]//dp[i][j]代表aim[0...i+j-1]是否为str1[0...i-1]和str2[0...j-1]的交错组成//dp[0][0]=true,空串是两空串的交错组成//dp[i][0]:aim[0...i-1]是否等于str1[0...i-1]//dp[0][j]:aim[0...j-1]是否等于str2[0...j-1]//dp[i][j]:下面4种情况的最小// 1.dp[i-1][j] && str1[i-1]==aim[i+j-1]// 2.dp[i][j-1] && str2[j-1]==aim[i+j-1]//得到dp之后,右下角元素即为结果。bool isCross(string str1, string str2, string aim){ int M = str1.size(); int N = str2.size(); if (aim.size() != M + N) return false; vector<vector<bool>> dp(M+1, N+1); dp[0][0] = true; for (int i = 1; i < M+1; i++) { if (str1[i-1] == aim[i-1]) dp[i][0] = true; else { for (int k = i; k < M+1; k++) dp[k][0] = false; break; } } for (int j = 1; j < N+1; j++) { if (str2[j-1] == aim[j-1]) dp[0][j] = true; else { for (int k = j; j < N+1; j++) dp[0][j] = false; break; } } for (int i = 1; i < M+1; i++) { for (int j = 1; j < N+1; j++) { dp[i][j] = (dp[i-1][j] && str1[i-1]==aim[i+j-1]) || (dp[i][j-1] && str2[j-1]==aim[i+j-1]); } } return dp[M][N];}int main_10(){ string str1 = "AB"; string str2 = "12"; string aim = "A12B"; cout << isCross(str1, str2, aim); return 0;}
阅读全文
0 0
- 字符串的交错组成
- 字符串的交错组成
- 字符串的交错组成
- 字符串的交错组成 动态规划
- 字符串交错组成
- 字符串交错组成
- 字符串交错组成
- [编程题]字符串交错组成
- 字符串交错组成--很优美的递归算法
- 递归与动态规划---字符串的交错组成
- 动态规划——字符串的交错组成
- 字符串交错组成(动态规划)
- 字符串交错组成(递归 or DP)
- 动态规划解决字符串交错组成问题
- #牛客#代码实现:字符串的匹配、字符串的交错组成、纸牌博弈、表达式组合
- 动态规划——字符串的交错组成(interleaving-string)
- 判断s3字符串是否由s1和s2交错组成
- 三个字符串s1, s2, s3, 现要求你判断s3是否由s1和s2交错组成的
- 星球闪烁高亮
- 沉浸式状态栏的实现
- 串的匹配算法
- 二叉排序
- 题目264-国王的魔镜
- 字符串的交错组成
- 第七天
- leetcode(169). Majority Element
- 奔小康赚大钱
- 序列流(SequenceInputStream)
- Oracle PL/SQL开发基础(第三十四弹:RAISE_APPLICATION_ERROR)
- 指针面试题
- 最基础问答
- Android Home键后Activity延迟启动