功能:找出来一个字符串中最长不重复子串

 def find_longest_no_repeat_substr(one_str):
#定义一个列表用于存储非重复字符子串
res_list=[]
#获得字符串长度
length=len(one_str)
for i in range(length):
tmp=one_str[i]
for j in range(i+1, length):
#用取到的字符与tmp中的字符相匹配,匹配不成功tmp字符继续增加,匹配成功直接跳出循环加入到res_list列表中
if one_str[j] not in tmp:
tmp+=one_str[j]
else:
#break只能跳出一层循环,并对if-else判断语句无效果,只对循环起作用
break
res_list.append(tmp)
#拿到列表总长度
n = len(res_list)
# 外层循环确定比较的轮数,x是下标
for x in range(n - 1):
# 内层循环开始比较,y是下标
for y in range(x + 1, n):
if len(res_list[x]) > len(res_list[y]):
# 让res_list[x]和res_list[y]列表中每一个元素比较,进行字符长度从小到大排序
res_list[x], res_list[y] = res_list[y], res_list[x]
return res_list[-1] if __name__ == '__main__':
one_str_list=['','abdfkjkgdok','']
for one_str in one_str_list:
res=find_longest_no_repeat_substr(one_str)
print('{0}最长非重复子串为:{1}'.format(one_str, res))

这里用到了排序算法

     #拿到列表总长度
n = len(res_list)
# 外层循环确定比较的轮数,x是下标
for x in range(n - 1):
# 内层循环开始比较,y是下标
for y in range(x + 1, n):
if len(res_list[x]) > len(res_list[y]):
# 让res_list[x]和res_list[y]列表中每一个元素比较,进行字符长度从小到大排序
res_list[x], res_list[y] = res_list[y], res_list[x]

最后是输出值

     # 120135435最长非重复子串为:201354
# abdfkjkgdok最长非重复子串为:abdfkj
# 123456780423349最长非重复子串为:123456780

基于python 3.5 所做的找出来一个字符串中最长不重复子串算法的更多相关文章

  1. Python判断一个字符串中是否存在多个子串中的一个

    在使用python的开发过程中,常常需要判断,字符串中是否存在子串的问题, 但判断一个字符串中是否存在多个字串中的一个时,如if (a or b) in c或者if x contains a|b|c| ...

  2. python字符串面试题:找出一个字符串中第一个字母和最后一个字符是第一次重复,中间没有重复且最长的子串

    1.给出任意一个字符串,打印一个最长子串字符串及其长度,如果有相同长度的子字符串,都要一起打印出来,该子字符串满足以下条件, 第一个字母和最后一个字符是第一次重复 这个子字符串的中间字母没有重复 这个 ...

  3. LeetCode练习3 找出一个字符串中最大不重复子字符串的长度

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...

  4. Python习题-输出一个字符串中最长的子字符串及其长度

    描述:有个字符串$sd1#111$svda123!!!221&eSSDSDG,包含特殊字符.数字和字母,输出最长的子字符串和他的长度#例如上面的字符串包含数字字母的字符串是svda123,长度 ...

  5. 找出字符串中第一个不重复的字符(JavaScript实现)

    如题~ 此算法仅供参考,小菜基本不懂高深的算法,只能用最朴实的思想去表达. //找出字符串中第一个不重复的字符 // firstUniqueChar("vdctdvc"); --& ...

  6. 笔试题&面试题:找出一个数组中第m小的值并输出

    题目:找出一个数组中第m小的值并输出. 代码: #include <stdio.h> int findm_min(int a[], int n, int m) //n代表数组长度,m代表找 ...

  7. [PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法

    问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 c ...

  8. 给定一个英文字符串,请编写一个PHP函数找出这个字符串中首先出现三次的那个英文字符(需要区分大小写),并返回

    给定一个英文字符串,请编写一个PHP函数找出这个字符串中首先出现三次的那个英文字符(需要区分大小写),并返回 //统计字符串中出现的字符的出现次数 public function strNum(){ ...

  9. python经典算法题:求字符串中最长的回文子串

    题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: ...

随机推荐

  1. Linux-vim编辑器与shell的简介

    VIM编辑器  vi是Visual interface的简称,它可以执行输出.删除.查找.替换.块操作等众多文本操作. 用户可以根据自己的需要对vim进行定制,这是其他编辑程序所没有的. vim不是一 ...

  2. 需登录账号与密码的网页爬取demo

    public static String connect(String dataUrl){ String result = null; try { HttpClient httpclient = ne ...

  3. unicat,multicast,broadcast区别

    单播.多播和广播单播”(Unicast).“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语.那么这些术语究竟是什么意思?区别何在? 1.单 ...

  4. Rhythmk 一步一步学 JAVA (18): Enum枚举学习

    枚举定义: public enum SizeEnum { SMALL, BIG, BIGEST }; public enum SizeStringEnum { SMALL("小") ...

  5. leetcode26

    public class Solution { public int RemoveDuplicates(int[] nums) { var len = nums.Length; ) { ; } els ...

  6. Firefox 被Snap.do 劫持

    Firefox IE 被劫持 windows的控制面板,卸载程序, 找任何跟「Snap.do」有关的软件,找到後先移除「Snap.Do Engine」再移除「Snap.Do」. 注册表里查找 Snap ...

  7. JVM 理解

    https://blog.csdn.net/hjxgood/article/details/53896229 一.什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写 ...

  8. Node.js究竟是什么?

    来源:https://www.ibm.com/developerworks/cn/opensource/os-nodejs/index.html?ca=drs#ibm-pcon   Node 旨在解决 ...

  9. leetcode 13 Roman to Integer 罗马数组转整型

    描述: 将一个字符串表示的罗马数字转为整数,范围0~3999 解决: 如果后一个比前一个大,则表示减,没什么技巧. map<}, {}, {}, {}, {}, {}, {}}; int rom ...

  10. Swift与OC的相互调用

    Swift经过四年的发展已经趋于成熟,是时候学一下了,感谢公司swift大佬的不吝赐教.心有所感记录一下,如有不足欢迎指正批评. 新建swift项目 新建Swift.OC类文件 可在新建OC文件时,建 ...