最大子串,最大子回文

来源:互联网 发布:电影院售票系统java 编辑:程序博客网 时间:2024/04/28 04:38

 

被鄙视了一道题,求一个字符串里面最大的子回文。

 

我想了想,基本的方案是:

把字符串正看和反看,作为两个字符串,然后求最大子串--->这样就简单一些了。

但是,说实话,如果在笔试的时候你能写出借助二维数组的那个版本到真是不太容易的一件事情。

 

所以,我觉得这个文章写的不错,简单,实用:

 http://blog.csdn.net/shaohui/archive/2006/06/09/784577.aspx

 

但是原文由一个小bug,修正一下,并增加了一些测试case

  1. #include <stdio.h>
  2. #include <string.h>
  3. #define BUFFER_SIZE 255
  4. int commstr(char *s1, char *s2){
  5.     char buf[BUFFER_SIZE];
  6.     int start,cnt=-1,len1=strlen(s1),len2=strlen(s2);
  7.     for (start=0; start+len2<=len1; start++){//原文是小于不是小于等于
  8.         for (cnt=0; cnt<len2; cnt++)
  9.             if (s1[start+cnt] != s2[cnt])
  10.                 break;
  11.         if (cnt >= len2)//如果在s1中找到一个子串和s1相同
  12.             break;
  13.     }
  14.     if (cnt >= len2)//如果s2是s1的子串
  15.         return len2;
  16.     
  17.     //把s2中后len2-1个字符构成的串同s1比较,并求子串长度
  18.     len1 = commstr(s1,s2+1);
  19.     //把s2中前len2-1个字符构成的串同s1比较,并求子串长度
  20.     strncpy(buf,s2,len2-1); 
  21.     buf[len2-1] = '/0';
  22.     len2 = commstr(s1,buf);
  23.     //返回较大者
  24.     return len1 > len2 ? len1 : len2;
  25. }
  26. int main(int arc, char *argv){
  27.     printf("%d/n",commstr("fghxxhij","degfghxxhfij"));
  28.     printf("%d/n",commstr("shaohui","huishao"));
  29.     printf("%d/n",commstr("aaabbaa","aabbaaa"));
  30.     printf("%d/n",commstr("aaaaa","aaaaa"));
  31.     printf("%d/n",commstr("shaoshaohuihui","shaohuishaoshaohuihui"));
  32.         return 0;
  33. }
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 浴室门玻璃坏了怎么办 电梯顶层安全安全距离不合格怎么办 制冰机有些孔不出水怎么办 制冰机排水孔堵住了怎么办 点我达装备抽查怎么办 空军常服大檐帽有一点变形怎么办 一般纳税人没有进项发票怎么办 汽车购买发票丢了怎么办 购买房子的发票丢了怎么办 购买的二手房发票丢失怎么办 购买空调时的发票丢失怎么办 发票购票本丢了怎么办 留学中介费贵了怎么办 车祸伤者不肯出院怎么办 增值税普通发票发票联丢失怎么办 纳税识别号错了怎么办 电子发票税号填写错误怎么办 发票抬头名称写错了怎么办 滴滴发票抬头写错了怎么办 普票抬头开错了怎么办 发票号码打错了怎么办 个人税票开错了怎么办 普票地址错了怎么办 专票税率开高了怎么办 专票税率开错了怎么办 发票姓名写错了怎么办 首付发票姓名写错怎么办 一般纳税人税率开错了怎么办 电子税票开错了怎么办 税率是6%开成3%怎么办 医院收费收错了怎么办 发票少打一个字怎么办 增值税发票抬头错了一个字怎么办 暂估入账跨年了怎么办 电子发票写错了怎么办 发票纳税人识别号写错了怎么办 电子发票忘填邮箱怎么办 公司名跟发票抬头不一样怎么办 买空调不给发票怎么办 卖苹果手机没有发票怎么办 刷机字库刷坏了怎么办