小万的回文串

小万的回文串

时间: 1ms        内存:128M

描述:

回文串是一个正读和反读都一样的字符串,例如,“z”,“aaa”,“abba”是回文串。小万嗜好回文串,见到一个字符串,就尝试将其转换为回文串。如果一个字符串最多改变一个字符后成为回文串,就成为可转换回文串,如,“ytu”,“ab” 是转换回文串,而“computer”既不是回文串,也不是可转换回文串。请编写一个程序判定任意一个由小写字母组成的字符串是否为回文串或可转换回文串。

输入:

字符串s(1<=|s|<=15)。

输出:

如果s是回文串或可转换回文串,输出“YES”,否则输出“NO”。

示例输入:

abccaa

示例输出:

YES

提示:

参考答案(内存最优[1092]):

#include <stdio.h>  
#include <stdlib.h>  
#include<string.h>  
int main()  
{  
    int i,j,n;  
    char s[100];  
int    num=0;  
    gets(s);  
    i=0;  
    j=strlen(s)-1;  
    while(i<=j)  
    {  
        if(s[i]!=s[j])  
            num++;  
        i++;  
        j--;  
    }  
if(num<=1)  
        printf("YES\n");  
        else  
            printf("NO\n");  
    return 0;  
}  

参考答案(时间最优[0]):

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    cin>>s;
    int cnt=0,n=s.length();
    for (int i=0; i<n/2; ++i)
        cnt+=s[i]!=s[n-i-1];
    if (cnt <= 1)
        cout<<"YES";
    else
        cout<<"NO";
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注