zoukankan      html  css  js  c++  java
  • 面试题:给定一个字符串,问是否能通过添加一个字母将其变为回文串

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #define char_len 16
    
    int huiwen(char str[])
    {
            int str_len=strlen(str);
            int yushu=str_len%2;
            int mid_left,mid_right;
            if(yushu==1)
                    mid_left=mid_right=str_len/2;
            else
            {
                    mid_left=str_len/2-1;
                    mid_right=str_len/2;
            }
            int i;
            char *p_left;
            char *p_right;
            if(yushu==1)
            {
                    p_left=str+mid_left-1;
                    p_right=str+mid_right+1;
            }
            else
            {
                    p_left=str+mid_left;
                    p_right=str+mid_right;
            }
            while(p_left>=str&&p_right<=str+str_len-1)
            {
                    if(*p_left==*p_right)
                    {
                            --p_left;
                            ++p_right;
                    }
                    else
                            return -1;
            }
            return 1;
    
    }
    int remove_char(char str[],int str_len,int index_remove,char dst_str[])
    {
            int i=0,j;
                                                  for(i=0,j=0;j<str_len;i++,j++)
            {
                    if(i==index_remove)
                    {
                            j+=1;
                    }
                    dst_str[i]=str[j];
            }
            dst_str[i]='';
            return 0;
    }
    int judge_huiwen(char str[])
    {
            int str_len=strlen(str);
            int i=0;
            for(i=-1;i<str_len;i++)
            {
                    char dst_str[char_len]={'0'};
                    remove_char(str,str_len,i,dst_str);
                    int ret=huiwen(dst_str);
                    if(ret==1)
                    {
                            printf("YES
    ");
                            return 0;
                    }
    
            }
            printf("NO
    ");
            return -1;
    }
    
    int main()
    {
            char str[char_len];
            printf("please input a string:
    ");
            gets(str);
            judge_huiwen(str);
    
    }

    思路是通过删除字符,判断是不是回文 ( 或反转字符串,再比较)

  • 相关阅读:
    phpcms 的getcache()函数
    git 上配置公钥
    linux 上git安装
    mac上php的扩展yaf安装
    Linux常用指令---grep(搜索过滤)
    mac virtualbox+vagrant安装
    nginx配置location及rewrite规则重写
    mac php环境搭建
    nginx.pid丢失问题
    git操作教程详解
  • 原文地址:https://www.cnblogs.com/woshare/p/6937665.html
Copyright © 2011-2022 走看看