字符串移位包含問題
#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-第三層循環的舉例