给定一个字符串,问是否能通过添加一个字母将其变为回文串
答案:2 悬赏:0 手机版
解决时间 2021-03-22 23:34
- 提问者网友:愿为果
- 2021-03-22 07:46
给定一个字符串,问是否能通过添加一个字母将其变为回文串
最佳答案
- 五星知识达人网友:西风乍起
- 2021-03-22 08:48
#include
#include
int judge(char str[])
{
int i, j;
i=0; j=strlen(str)-1;
while(i
{
if(str[i]!=str[j])
break;
i++, j--;
}
if(i>=j)
return(1);
else
return(0);
}
void main(void)
{
char Str[100];
scanf("%s", Str);
if(judge(Str))
printf("Yes\n");
else
printf("No\n");
}
#include
int judge(char str[])
{
int i, j;
i=0; j=strlen(str)-1;
while(i
if(str[i]!=str[j])
break;
i++, j--;
}
if(i>=j)
return(1);
else
return(0);
}
void main(void)
{
char Str[100];
scanf("%s", Str);
if(judge(Str))
printf("Yes\n");
else
printf("No\n");
}
全部回答
- 1楼网友:你可爱的野爹
- 2021-03-22 09:49
思路:两个指针,一个从左往右,一个从右往左,只能跳过一次,第二次的时候及说明需要添加两个字符
#include "stdafx.h"
#include
#include
using namespace std;
int main()
{
string str;
while (cin>>str)
{
bool flag = true;
bool move = true;
int left = 0;
int right = str.length() - 1 ;
while (left< str.length() / 2 && right>= str.length() / 2)
{
if (str[left] == str[right])
{
left++;
right--;
}
else if (right - 1 >= 0 && str[left] == str[right - 1] && move==true)
{
right--;
move = false;
}
else if (left + 1 >= 0 && str[left+1] == str[right ] && move == true)
{
left++;
move = false;
}
else
{
flag = false;
break;
}
}
if (flag == false)
{
cout << "no" << endl;
}
else
{
cout << "yes" << endl;
}
}
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯