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