题目二:
描述:一次shift操作就是把一个单词的第一个挪到最后,单词有n位就最多挪n次,问可以和原单词相同几次。
如输入:byebye 输出:2
输入:abcd 输出:1
注意:
substr(index,num)返回本字符串的一个子串,从index开始,长num个字符。如果没有指定,将是默认值 string::npos。这样,substr()函数将简单的返回从index开始的剩余的字符串。
例如:
string s(“What we have here is a failure to communicate”);
string sub = s.substr(21);
cout << "The original string is " << s << endl;
cout << "The substring is " << sub << endl;
显示:
The original string is What we have here is a failure to communicate
The substring is a failure to communicate
/*描述:一次shift操作就是把一个单词的第一个挪到最后,单词有n位就最多挪n次,问可以和原单词相同几次。
如输入:byebye 输出:2
输入:abcd 输出:1*/
#include<iostream>
#include<string>
using namespace std;
int main(){
string s,cur;
cin>>s;
int sum=0;//和原字符串相同次数
string str=s;//保存原字符串
for(int i=0;i<s.size();i++){
cur=s.substr(1);//用substr截取第一个字符以后的全部字符,注意substr的用法
cur=cur+str[i];//再加上被删去的字符
//以上完成一次shift操作
//cout<<i<<" "<<cur<<endl;
if(cur==str){
sum++;
}
s=cur;
}
cout<<sum<<endl;
return 0;
}