思路:
错综求值
A B C D(步长为0),看AB,BC,CD
A B C
A B C D(步长为1,看AC,BD)
A B
依次类推
AC代码
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
string s;
int main()
{
while(cin >> s && s != "*")
{
if(s.size() == 1 || s.size() == 2) {
cout << s << " is surprising." << endl;
continue;
}
int cnt = 0;//判断序列相同的数目
int flag = 0;
for(int i = 0; i < s.size() && cnt != 2; i++)
{
cnt = 0;
for(int j = i + 1,k = 0; j < s.size();j++,k++) //k使从s0开始枚举与值对应的L步的字符去比较 j = i+1控制步数
{
if(s[j] == s[k]) cnt++;
if(cnt == 2) {
flag = 1;
continue;
}
}
}
if(flag) cout << s << " is NOT surprising." << endl;
else cout << s << " is surprising." << endl;
}
return 0;
}