zoukankan      html  css  js  c++  java
  • 字符串的子串

    目录

    、找到字符串的最长无重复字符子串

    给定一个字符串str,返回str的最长无重复字符子串的长度。

    举例:

    str = 'abcd',返回4.

    str = 'aabcb',最长无重复字符子串为'abc',返回3.

    要求:

    如果str的长度为N,请实现时间复杂度为O(N)的方法。

    思路:时间O(N),空间O(N)

    遍历字符串中的每一个元素。借助一个辅助键值对来存储某个元素最后一次出现的下标。用一个整形变量存储当前无重复字符的子串开始的下标。

    代码:

    def maxUnique(s):
        if s == None or s == '':
            return 0
        dic = {}
        res , start = 0 , -1
        for i in range(len(s)):
            if s[i] in dic:
                start = max(start,dic[s[i]])
            tmp = i - start
            dic[s[i]] = i
            res = max(res,tmp)
        return res
       
    s = 'ababcadc'
    maxUnique(s)

    、题目:给定一个字符串,输出所有的字典序。

    如:

    输入字符串:'ac',输出:['ac','ca']

    输入字符串:‘abc' ,输出:['abc','acb','bac','bca','cab','cba']

    输入字符串:‘acc',输出:['acc','cac','cca']

    思路:递归

    如:'abc',对于'a',返回’bc'的全排列字典序,对于'b',返回'ac'的全排列,对于'c',返回'ab‘的全排列。【循环加递归】

    代码1:

    复制代码
    def printstr(s):
        liststr=[]
        result=[]
        if len(s)==1:
            liststr.append(s)
            return liststr
        else:
            for i in range(len(s)):
                liststr1=printstr(s[:i]+s[i+1:])
                for item in liststr1:
                    result.append(s[i]+str(item))
            return list(set(result))
    s=input()
    print(printstr(s))
    复制代码

    代码2:

    复制代码
    res = list()
    def traverse(ss,join_ss=''):
        if ss:
            for i,s in enumerate(ss):
                sub_ss = ss[:i]+ss[i+1:]
                traverse(sub_ss,join_ss+s)
        elif join_ss and join_ss not in res:
            res.append(join_ss)
        return res
    
    result = traverse('abc','')
    print(result)
    复制代码

     

     

     
  • 相关阅读:
    排序算法比较及其应用
    confluence wiki 安装
    hbase优缺点
    maven nexus私服搭建
    IntelliJ Idea 2017 免费激活方法
    presto-cli通过hive查询hdfs
    monit拉起服务
    MAC nginx代理设置
    kafka-manager安装
    flume从log4j收集日志输出到kafka
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/10466751.html
Copyright © 2011-2022 走看看