题目二:
描述:一次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;
}
本文介绍了一种通过C++实现的算法,该算法用于计算一个字符串经过shift操作(即首位字符移动到末尾)后,能与原字符串匹配的次数。示例包括'byebye'输出2次,'abcd'输出1次。文章详细展示了如何使用substr函数截取字符串并进行比较的过程。
1002

被折叠的 条评论
为什么被折叠?



