免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: iakuf
打印 上一主题 下一主题

微软面世试题-最大公共串-求两个字符串的最大公共子串的一个有意思的题目 [复制链接]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
51 [报告]
发表于 2010-05-31 15:35 |只看该作者
就是一个或多个非\n字符后接0个或多个非\n字符,后接\n, 后接0个或多个非\n字符,再后接红色部分所匹配的字符串,蓝色部分是零宽断言。

说得挺啰嗦的。

论坛徽章:
0
52 [报告]
发表于 2010-05-31 15:41 |只看该作者
回复 51# blackold


    了解了,多谢,对这个 零宽断言,还是第一次听说!

论坛徽章:
0
53 [报告]
发表于 2010-06-09 19:30 |只看该作者
哪位神牛写个后缀数组版本的~~

论坛徽章:
0
54 [报告]
发表于 2010-07-22 17:58 |只看该作者
  1. #!/bin/env perl

  2. use strict;
  3. use warnings;

  4. my $s1 = 'asdfdfdfdfdfdfdfdfdfasf34lk343434343433333fdasfd';
  5. my $s2 = 'asdfdfdfdfdfdfdfdfdf3434343434343jfshasdazlzlasbfasf';

  6. warn max_mutual_str($s1, $s2);

  7. sub max_mutual_str
  8. {
  9.         my ($cnt_offest, $cnt_length) = (0, 1);
  10.         my ($substr_offest, $substr_length) = (0, 0);
  11.         my $str_length = length($_[0]);

  12.         while ($str_length - $cnt_offest > $substr_length)
  13.         {
  14.                 if (index($_[1], substr($_[0], $cnt_offest, $cnt_length)) == -1)
  15.                 {
  16.                         ++$cnt_offest;
  17.                 }
  18.                 else
  19.                 {
  20.                         if ($substr_length < $cnt_length)
  21.                         {
  22.                                 ($substr_offest, $substr_length) = ($cnt_offest, $cnt_length);
  23.                         }
  24.                        
  25.                         ++$cnt_length;
  26.                 }
  27.         }

  28.         return substr($_[0], $substr_offest, $substr_length);
  29. }

复制代码

论坛徽章:
0
55 [报告]
发表于 2010-07-23 08:46 |只看该作者
好厉害!!

论坛徽章:
0
56 [报告]
发表于 2010-08-04 17:09 |只看该作者

论坛徽章:
0
57 [报告]
发表于 2010-08-14 17:21 |只看该作者
牛啊~~~~~~~~

论坛徽章:
0
58 [报告]
发表于 2010-08-14 17:33 |只看该作者
看完了得顶

论坛徽章:
1
午马
日期:2013-11-25 16:01:44
59 [报告]
发表于 2012-11-24 15:54 |只看该作者
回复 37# blackold


my $str1 ="aab12345678";
my $str2 = "ab1234yb1234567";
会给出错误答案:ab1234
正则思想很好,只是忽略了正则匹配的方式并非逐字符前进匹配:一但匹配成功就跳到该位置末尾继续匹配。

论坛徽章:
0
60 [报告]
发表于 2012-11-24 17:12 |只看该作者
khandielas 发表于 2008-12-14 06:33
楼主写的象Perl写的C 程序

在Perl用hash作这些活比较典型了,


这个虽然能找到相同的一个字符,可是如果不相邻,也会得到,跟题目的要求好像还差点儿~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP