[编程之美] PSet3.1 字符串移位包含的问题
2014-08-16 19:55
260 查看
问题描述:
给定两个字符串s1和s2,要求判定s2是否弄够被s1做循环移位(rotate)得到的字符串包含。例如,给定s1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false.
思路分析:
解法一:直接循环移位
代码如下:
解法二:直接分析移位结果,发现ABCD移位后的结果一定是ABCDABCD的子串,通过提高空间复杂度来换取时间复杂度的降低。代码如下:
解法三:不需申请过多的空间,直接循环src,当循环到尾部时,跳转到头部即可
//解法三:直接依照src首尾相连进行遍历
bool findStr(char src[],char dst[], int srcLen , int dstLen)
{
bool flag = false;
for(int i=0 ; i<srcLen ; i++){
if(src[i] == dst[0]){//寻找首字母匹配
flag = true;
for(int j=1 ; j<dstLen ; j++){
if(src[(i+j)%srcLen] != dst[j]){
flag = false;
break;
}
}
}
if(flag == true)//找到了这样的子序列,跳出循环
break;
}
return flag;
}
给定两个字符串s1和s2,要求判定s2是否弄够被s1做循环移位(rotate)得到的字符串包含。例如,给定s1=AABCD和s2=CDAA,返回true;给定s1=ABCD和s2=ACBD,返回false.
思路分析:
解法一:直接循环移位
代码如下:
//解法一:通过对src循环移位判断是否dst在src内 bool findStr(char src[],char dst[],int srcLen , int dstLen) { int K = srcLen; while(K--){//循环右移dstLen次恢复原位 char tempChar = src[srcLen-1]; for(int i=srcLen-1 ; i>=1 ; i--)//移位一次 src[i] = src[i-1]; src[0] = tempChar; if(strstr(src,dst)) return true; } return false; }
解法二:直接分析移位结果,发现ABCD移位后的结果一定是ABCDABCD的子串,通过提高空间复杂度来换取时间复杂度的降低。代码如下:
//解法二:通过在组合字符串[src,src]上寻找dst进行判定 bool findStr(char src[],char dst[], int srcLen) { bool flag = false; char *srcsrc = new char[2*srcLen+1];//多存放一个'\0' strcpy_s(srcsrc, sizeof(char)*(2*srcLen+1) , src); strcat_s(srcsrc, sizeof(char)*(2*srcLen+1) , src); if(strstr(srcsrc,dst)) flag = true; delete []srcsrc; return flag; }
解法三:不需申请过多的空间,直接循环src,当循环到尾部时,跳转到头部即可
//解法三:直接依照src首尾相连进行遍历
bool findStr(char src[],char dst[], int srcLen , int dstLen)
{
bool flag = false;
for(int i=0 ; i<srcLen ; i++){
if(src[i] == dst[0]){//寻找首字母匹配
flag = true;
for(int j=1 ; j<dstLen ; j++){
if(src[(i+j)%srcLen] != dst[j]){
flag = false;
break;
}
}
}
if(flag == true)//找到了这样的子序列,跳出循环
break;
}
return flag;
}
相关文章推荐
- 读书笔记之编程之美 – 3.1 字符串移位包含的问题
- 编程之美--3.1字符串移位包含的问题
- 编程之美3.1 字符串移位包含问题
- 编程之美--3.1字符串移位包含问题
- 字符串移位包含问题(编程之美_3.1)
- 编程之美 3.1 字符串移位包含的问题
- 编程之美------3.1 字符串移位包含的问题
- 编程之美-3.1-字符串移位包含的问题
- 编程之美3.1 字符串移位包含问题
- 编程之美3.1字符串移位包含的问题的扩展问题
- 编程之美 3.1字符串移位包含的问题
- 3.1字符串移位包含问题
- 编程之美——3.1 字符串移位包含的问题
- 编程之美——3.1字符串移位包含问题
- 编程之美3.1 字符串移位包含问题
- 【编程之美】字符串移位包含的问题(续)
- 字符串移位包含问题(编程之美3.1)
- 编程之美3.1字符串移位包含问题
- 编程之美-3.1字符串移位包含问题
- 编程之美---->字符串移位包含问题