一.标题
二.解题思路
什么是回文字符串,题目里面说就是一个正读和反读都一样的字符串 ,回文串也就是前后对称的字符串。本题是判断是否是回文串的变形题。字符串本身不一定是回文,把第二个字符串插入进去看是否是回文。
【解题思路】:
本题使用暴力求解方式计算即可,遍历str1,将str2 insert进入str1的每个位置,判断是否是回文,是就++count;需要注意的是这里不能 str1.insert(i, str2),这样的话str1改变了,判断下一个位置就不对了。所以每次使用str1拷贝构造一个str,然后str.insert(i, str2),再判断。
三.代码如下
#include<iostream>
#include<string>
using namespace std;
bool IsCircleText(const string& s) //判断是否是回文
{
size_t begin=0;
size_t end=s.size()-1;
while(begin<end)
{
if(s[begin]!=s[end])
return false;
begin++;
end--;
}
return true;
}
int main()
{ //将字符串2插入到字符串1每个位置,再判断是否是回文
string str1,str2;
getline(cin,str1);
getline(cin,str2);
size_t count=0;
for(size_t i=0;i<=str1.size();i++)
{
string str=str1;
str.insert(i,str2);
if(IsCircleText(str))
count++;
}
cout<<count<<endl;
}