找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4077|回复: 4

[求助] 求公共字符

2

主题

5

帖子

5

积分

贫民

积分
5
AKgjm 发表于 2015-8-7 16:13:46 | 显示全部楼层 |阅读模式
就是一个非常简单的问题,输入俩个字符串,输出他们最大的公共字符数,不区分大小写,我觉得用其他语言耿简单,但是就是Python写不出,我想求大神帮忙,我是新手,谢谢哒
回复

使用道具 举报

0

主题

23

帖子

23

积分

贫民

积分
23
关大叔 发表于 2015-8-12 10:45:21 | 显示全部楼层
python自带max函数,或用object参数
回复 支持 反对

使用道具 举报

0

主题

2

帖子

10

积分

贫民

积分
10
windRunner 发表于 2015-8-13 08:34:29 | 显示全部楼层
我也是小白一只。不过写了一个你可以试试看。
str1 = raw_input("input first String")
str2 = raw_input("input second String")
restr1 = str1.upper()
restr2 = str2.upper()
little_len = 0
startindex = 0
endindex = 0
flag = False
targestr = ""
compstr = ""
res = []

def compar1_2(sta, end, targ):
    return targ[sta: end]

if restr1.__len__() > restr2.__len__():
    little_len = restr2.__len__()
    targestr = restr2
    compstr = restr1
else:
    little_len = restr1.__len__()
    targestr = restr1
    compstr = restr2


while endindex <= little_len:

    cutstr = compar1_2(startindex, endindex, targestr)
    if cutstr in compstr:
        res.append(cutstr)
        endindex += 1
        flag = True
        continue
    else:
        if flag:
            startindex = endindex - 1
        else:
            startindex = endindex
            endindex += 1
        flag = False
        continue

print max(map(len, res))
回复 支持 反对

使用道具 举报

2

主题

5

帖子

5

积分

贫民

积分
5
AKgjm  楼主| 发表于 2015-8-18 15:52:08 | 显示全部楼层
windRunner 发表于 2015-8-13 08:34
我也是小白一只。不过写了一个你可以试试看。
str1 = raw_input("input first String")
str2 = raw_input(" ...

我后来想了,下面是程序,有一个BUG就是如果有俩组长度一样的话它只能保留下一组
str1=raw_input().upper()
str2=raw_input().upper()
n=0
r=[]
if len(str1)>len(str2):
    for i in range(0,len(str2)):
        for j in range(len(str2)-1,i-1,-1):
            if (str2[i:j+1] in str1) and (j-i>=n):
                n=j-i
                r=str2[i:j+1]
else :
    for i in range(0,len(str1)):
        for j in range(len(str1)-1,i-1,-1):
            if (str1[i:j+1] in str2) and (j-i>=n):
                n=j-i
                r=str1[i:j+1]  
if len(r)!=0:
    print r
else:
    print "None"
回复 支持 反对

使用道具 举报

0

主题

2

帖子

10

积分

贫民

积分
10
windRunner 发表于 2015-8-18 17:13:29 | 显示全部楼层
AKgjm 发表于 2015-8-18 15:52
我后来想了,下面是程序,有一个BUG就是如果有俩组长度一样的话它只能保留下一组
str1=raw_input().upper ...

r=str1[i:j+1] 这是赋值语句啊!!!!!!
你这么写必然只能保留一组啊,因为后来符合条件的数据就会把前面已经存在的数据冲掉了。(就是r已经指向了新的内存地址了,跟原来的字符串说88了。)
既然你定义的是list类型,那完全可以改写成  r.append(str1[i:j+1])
这样每次有符合条件的就添加,而不是重新赋值~~~~~
可以尝试一下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表