• 牛客寒假算法基础集训营4 I题 Applese 的回文串


    链接:https://ac.nowcoder.com/acm/contest/330/I
    来源:牛客网
     

    自从 Applese 学会了字符串之后,精通各种字符串算法,比如……判断一个字符串是不是回文串。


    这样的题目未免让它觉得太无聊,于是它想到了一个新的问题。

    如何判断一个字符串在任意位置(包括最前面和最后面)插入一个字符后能不能构成一个回文串?

    输入描述:

    仅一行,为一个由字母和数字组成的字符串 s。

    输出描述:

    如果在插入一个字符之后可以构成回文串,则输出"Yes", 否则输出"No"。

    示例1

    输入

    复制

    applese

    输出

    复制

    No

    示例2

    输入

    复制

    java

    输出

    复制

    Yes

    备注:

    |s|≤105

    题解:同时从两边遍历字符串,如果遇到左不等于右后判断左边删一个或者右边删一个是否能全部遍历完;

    例如:j a v a  s[0]!=s[3],所以删除左边一个再次遍历,a v a是回文串,成立,输出Yes;

    #include<iostream>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    char s[111111];
    bool solve(int x,int y,bool flag){
            while(x<=y){
                    if(s[x]==s[y])
                            x++,y--;
                    else if(flag)//只能删一次
                            return solve(x+1,y,0)||solve(x,y-1,0);
                    else
                            return 0;
            }
            return 1;
    }
    int main()
    {
            scanf("%s",s);
            solve(0,strlen(s)-1,1)?printf("Yes
    "):printf("No
    ");
            return 0;
    }
    
  • 相关阅读:
    hadoop编程问题
    poj2760:数字三角形
    poj1201:Intervals
    差分约束
    poj1033:Defragment
    poj1089:Intervals
    poj2251:Dungeon Master
    天天向上的力量 III
    整数逆位运算
    星号三角形 I
  • 原文地址:https://www.cnblogs.com/aeipyuan/p/10459915.html
Copyright © 2020-2023  润新知