面试宝典_Python.常规算法.0002.输出任意两个字符串中最长公共子串?
生活随笔
收集整理的這篇文章主要介紹了
面试宝典_Python.常规算法.0002.输出任意两个字符串中最长公共子串?
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
面試題目:
1. 用PY實(shí)現(xiàn)求任意兩個(gè)字符串最長(zhǎng)的公共子串?
解題思路:
1. 先求出長(zhǎng)度最小的字符串,然后遍歷其索引,這樣可以避免字符串索引溢出,然后判斷對(duì)應(yīng)索引的值是否相同,相同的話就加到目標(biāo)字典,不同的話就更新目標(biāo)字典索引,但不存儲(chǔ),最后再按照值長(zhǎng)度逆向排序取出第一個(gè)元素即可.
具體實(shí)現(xiàn):
#!/usr/bin/env?python #?-*-?coding:?utf-8?-*- """ # #?Authors:?limanman #?OsChina:?http://xmdevops.blog.51cto.com/ #?Purpose: # """ #?說(shuō)明:?導(dǎo)入公共模塊 #?說(shuō)明:?導(dǎo)入其它模塊def?get_most_part(sstr,?tstr):s_len?=?len(sstr)t_len?=?len(tstr)r?=?{}count?=?0#?說(shuō)明:?遍歷長(zhǎng)度較小者長(zhǎng)度防止溢出for?i?in?xrange(s_len?if?s_len?<=?t_len?else?t_len):#?說(shuō)明:?如果兩個(gè)字符相同則追加if?sstr[i]?==?tstr[i]:r.setdefault(count,?[]).append(sstr[i])else:#?說(shuō)明:?否則改變字典索引count?=?i#?說(shuō)明:?對(duì)結(jié)果集排序value?=?sorted(r.itervalues(),?key=lambda?_:?len(_),?reverse=True)if?not?value:return?''return?''.join(value[0])if?__name__?==?'__main__':print?get_most_part('ayx',?'yxz')轉(zhuǎn)載于:https://blog.51cto.com/xmdevops/1888889
總結(jié)
以上是生活随笔為你收集整理的面试宝典_Python.常规算法.0002.输出任意两个字符串中最长公共子串?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 同步与异步的概念
- 下一篇: ionic + cordova 配置和开