题目描述:
给定一个字符串,问是否能通过添加一个字母将其变为回文串。
输入描述:
一行一个由小写字母构成的字符串,字符串长度小于等于10。
输出描述:
输出答案(YES\NO).
示例1
输入
coco
输出
YES
代码实现如下:
#include <iostream>
#include <cstdlib>
#include <string>
#include <algorithm>
using namespace std;
bool IsHW(const string& str)
{
string s=str;
reverse(s.begin(),s.end());
return s==str;
}
int main()
{
string str;
while(cin>>str)
{
if(str.empty()||str.length()==1)
{
cout<<"YES";
}
else
{
bool ret=false;
string tmp;
int n=str.length();
for(int i=0;i<n;++i)
{
tmp=str.substr(0,i)+str.substr(i+1);
//将i位置的字符去掉
if(IsHW(tmp))
{
ret=true;
break;
}
}
if(ret)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}
return 0;
}
这里有一个reverse函数,可能我们有些不太理解,它的头文件是#include,是用来将整个字符串翻转的,如下,是一个例子。
好了,看了上面的解题思路以后,大家可以去牛客网跑一跑代码!
链接https://www.nowcoder.com/questionTerminal/655a43d702cd466093022383c24a38bf