HihoCoder - 1721-回文字符串2

题目链接

思路:

从外往内找(从内往外找是不行的)

每次判断最外面的两个字符是否相同

如果不相同记录一下这两个点,如果没有找到,直接输出最中间的点

然后判断究竟是删除左边点还是右边点  符合题意

但是题目要求是最小的

所以要从都要往前找一找是否有和要删除元素相同的元素(与删除元素的中间不会有其他元素)

#include
using namespace std;
const int maxn=500000+100;
char s[maxn];
int main()
{
    scanf("%s",&s);
    int len=strlen(s);
    int res=len/2;
    int i=0,j=len-1;
    while(i=0; k--)
        {
            res=k;
            if(s[k]!=s[i])
            {
                res=k+1;
                break;
            }
        }
        printf("%d\n",res+1);
    }
    else if(i>=j)
    {
        for(int k=i-1; k>=0; k--)
        {
            res=k;
            if(s[k]!=s[i])
            {
                res=k+1;
                break;
            }
        }
        printf("%d\n",res+1);
    }
    else if(s[i+1]==s[j])
    {
        for(int k=i-1; k>=0; k--)
        {
            res=k;
            if(s[k]!=s[i])
            {
                res=k+1;
                break;
            }
        }
        printf("%d\n",res+1);
    }
    else if(s[i]==s[j-1])
    {
        for(int k=i-1; k>=0; k--)
        {
            res=k;
            if(s[k]!=s[i])
            {
                res=k+1;
                break;
            }
        }
        printf("%d\n",res+1);
    }
}

你可能感兴趣的:(水题模拟)