小易喜欢的单词实现的算法
小易喜欢的单词实现,这是什么算法?
#include<iostream>
#include<string>
using namespace std;
bool f(string str)//判断连续重复
{
for(int i = 0; i < str.length() - 1; i++)
{
if(str[i] == str[i+1])
return true;
}
return false;
}
bool g(string str)//判断重复子序列
{
int array[26][3] = {0};
//26行3列,26行为26个字母
//第一列为字母出现次数
//第二列为字母首次出现位置
//第三列为字母末次出现位置
for(int i = 0; i < str.length(); i++)
{
array[str[i]-'A'][0]++;
array[str[i]-'A'][2] == i;
if(array[str[i]-'A'][1] == 0)
array[str[i]-'A'][1] = i;
}
for(int i = 0; i < 26; i++)
{
if(array[i][0] >= 4)//有出现四次以上的不满足
return true;
}
for(int i = 0; i < 26; i++)
{
for(int j = i + 1; j < 26; j++)
{
//若存在两个字母,首次出现位置与末次出现次数均满足小于关系
if((array[i][1] < array[j][1]) && (array[i][2] < array[j][2]))
return true;
}
}
return false;
}
int main()
{
string str;
cin >> str;
if(f(str) || g(str))
cout << "Dislikes" << endl;
else
cout << "Likes" << endl;
}