字符串移位包含问题
#include <iostream>
#include <algorithm>
using namespace std;
int main(){string a,b;cin>>a>>b;//谁长遍历谁if(a.size()<b.size()) swap(a,b);//1-对整个字符串进行移位for(int i=0; i<a.size(); i++){//每次循环都将第一个字符串移动到末尾形成新的字符串a=a.substr(1)+a[0];//2-遍历每个子串//j+b.size()意为在 a 中从位置 j 开始取出 b.size() 个字符时for(int j=0; j+b.size()<=a.size(); j++){int k=0;//3-遍历子串中的每个字符 for(; k<b.size(); k++){//j+k意为从 a 的第 j 个位置开始,逐个字符和 b 对应位置的字符比较if(a[j+k]!=b[k])break;}//只有当整个 b 被成功匹配完,k 才会从 0 增加到 b.size()//如果中途有字符不匹配,break 会提前跳出循环,k 就不会等于 b.size()if(k==b.size()){cout<<"true";return 0;}}}cout<<"false";return 0;
}
2-第二层循环的举例
3-第三层循环的举例