牛客网链接: link.
解题思路:
- 找到位置进行插入 (这里需要注意的就是在写循环的时候,如果只是小于str1.size(),那么就在尾部的位置进行不了插入,就少了一种可能)
- 判断是否回文(这个可以单独的写一个接口来进行判断①前后指针法②把插入完的字符串直接进行逆置,然后判断是否和原字符串相同)
- 还有一点需要注意的是不要再str1的本身上面进行修改,需要重新的拷贝一份。
using namespace std;
bool isCircle(const string& s) //在不修改的情况下,尽量加入const,来增加代码的健壮性
{
size_t start = 0,end = s.size()-1;
while(start < end)
{
if(s[start] != s[end])
{
return false;
}
++start;
--end;
}
return true;
}
int main()
{
string str1,str2;
getline(cin,str1);
getline(cin,str2);
int count = 0;
for(int i = 0;i<=str1.size();++i)
{
string str = str1;//不要在str1的本身上面进行修改
str.insert(i,str2);
if(isCircle(str))
{
count++;
}
}
cout << count<<endl;
return 0;
}