python版本--求最长子串
来源:互联网 发布:公司封了lol端口 代理 编辑:程序博客网 时间:2024/06/05 08:55
def lengthOfLongestSubstring(s): d_map = {} start = maxLength = 0 for i in range(len(s)): if s[i] in d_map and start <= d_map[s[i]]: start = d_map[s[i]] + 1 else: maxLength = max(maxLength, i - start + 1) d_map[s[i]] = i return maxLengths = "abcabcdbb"print lengthOfLongestSubstring(s)
在Python中,或者在编程语言中,字典的的用处很多,会想起当初写存活主机扫描,第一次用到C++的 map字典,当时惊为天人,第一次用到这么高端的写法,当时感觉真是方便,现在才发现,这个数据结构的用处很多,比如以上的这个算法。
1.首先我们申请一个空的字典,
2.然后定义申请一个字串的最大长度maxLength和每个元素出现的开始首位值start,start这个值仅当字符串中第二次出现时会变化,值等于都一次出现的位置加1即可。
3.开始循环,如果当前字符存在于字典中且start小于当前字符的值,start加上1,否则的话就求出循环到当前位置时最大的字串的长度。
4.最后返回最大字串长度
我们根据字典的特性,很好的求出了子串的长度。
本来我最初的思路是:
1.从第一位遍历,求从这最大字串的长度,
2.然后每次保存到字典,
3.最后求字典中的最大值
最后发现写下来很复杂,而且很多情况没有写进去,就借鉴了别人的写法,果然,时间复杂度降到了最低,也便利了了每个元素,字典中,只存的是字串,很棒的思路,感谢!
0 0
- python版本--求最长子串
- python求最长子串
- python实现求两个字符串的最长公共子串
- python实现求字符串最长公共子串
- 求两个字符串的最长公共子串 python实现
- 求最长回文子串
- 求最长子串[C++]
- 求最长公共子串
- 求最长重复子串
- 求最长回文子串
- 求最长公共子串
- 求最长公共子串
- 求最长公共子串
- 求最长回文子串
- 求最长回文子串
- 求最长公共子串
- 求最长回文子串
- 求最长公共子串
- java---面向对象
- openvswitch配置sflow进行网络监控
- 顺序存储的二叉树的最近的公共祖先问题
- Redis pub/sub(Publish,Subscribe)
- struts2的详解及使用
- python版本--求最长子串
- Android自定义View之LoadingLayout
- Your app must be published under a seller name and company name that reflects the XXXXX brand解决办法
- 《提高SQL查询效率的30种方法》
- Java之路——名词解释(一)
- LinkedList
- Zend Studio12的安装破解注册教程听语音
- Vue- 动态元素属性及v-bind和v-model的区别
- java用命令编译打包可运行jar