小易喜歡的單詞實作,這是什么演算法?
#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;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/30939.html
標籤:模式及實現
上一篇:求C++螢屏如何套娃?
