黑马程序员技术交流社区

标题: 我是不是把题想难了? [打印本页]

作者: caopengxu    时间: 2014-7-18 11:13
标题: 我是不是把题想难了?
找出多个字符串中的最大公共子字符串,如“nbitheimanb”和“itheia”的最大子串是:”ithei”。(C语言)
解题思路:从键盘输入几个字符串,让第一个字符串中的第一个字符和后面几个字符串中的每个字符进行比较,如果都能找到相同的字符,那么再次通过比较,算出相同字符的后面还有几个字符是相同的,记录个数;让第一个字符串中的第二个······最后输出个数最多的子串。
作者: fantacyleo    时间: 2014-7-18 12:41
没有啊,你这个思路是最自然的思路了。给你一个可以优化的地方:几个字符串的最长公共子串不可能超过长度最短的那个字符串。因此只要遍历长度最短的那个字符串的所有可能子串,判断是否是其他字符串的子串即可。
作者: Moebius    时间: 2014-7-18 15:44
这样想可以啊
作者: caopengxu    时间: 2014-7-18 16:39
fantacyleo 发表于 2014-7-18 12:41
没有啊,你这个思路是最自然的思路了。给你一个可以优化的地方:几个字符串的最长公共子串不可能超过长度最 ...

这个思路不错,感谢。
作者: caopengxu    时间: 2014-7-18 16:42
Moebius 发表于 2014-7-18 15:44
这样想可以啊

哎,根据这个思路编,我整了一天了,输出还是有问题。
作者: 此生逍遥    时间: 2014-7-18 17:53
这个思路挺好的
作者: AndyWang    时间: 2014-7-18 20:00
fantacyleo 发表于 2014-7-18 12:41
没有啊,你这个思路是最自然的思路了。给你一个可以优化的地方:几个字符串的最长公共子串不可能超过长度最 ...

顶一个         
作者: 王书敏    时间: 2014-7-18 20:04
这个思路没错,用三个for循环第三个for循环判断条件是字符是否相等
作者: caopengxu    时间: 2014-7-19 07:42
王书敏 发表于 2014-7-18 20:04
这个思路没错,用三个for循环第三个for循环判断条件是字符是否相等

奥,那我再研究研究。
作者: istream    时间: 2014-7-19 14:20
最简单的办法,通过构造矩阵来解决这个问题。网上搜索一下。
作者: huyanpeng    时间: 2015-1-18 16:01
受益了,学了一些。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2