zoukankan      html  css  js  c++  java
  • 【剑指Offer】字符串的排列

    题目描述:

    输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
    输入描述:
    输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

    Ways

    很多人使用python的permutation库去做,那么还有什么意义呢?

    要做字符串的全排列。做法是把对字符串中的每个元素都当做起始位置,把其他元素当做以后的位置,然后再同样的进行操作。这样就会得到全排列

    # -*- coding:utf-8 -*-
    class Solution:
        def Permutation(self, ss):
            if len(ss) <=0:
                return []
            res = list()
            self.perm(ss,res,'')
            uniq = list(set(res))
            return sorted(uniq)
        def perm(self,ss,res,path):
            if ss=='':
                res.append(path)
            else:
                for i in range(len(ss)):
                    self.perm(ss[:i]+ss[i+1:],res,path+ss[i])
    
    print(Solution().Permutation('abc'))
    

     这个题不使用index的原因是,我们认为已经遍历过了的元素过滤掉了,只留下了未遍历的剩余的字符串当做ss。因此,所有的元素遍历完成了,ss也就是空了,就可以结束了。

  • 相关阅读:
    Spring Security配置logout地址
    flex布局
    视口的学习笔记
    box-sizing属性
    css清除浮动
    line-height的理解
    position和float小结
    css居中方法小结
    margin重叠
    浅谈负margin
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/9732384.html
Copyright © 2011-2022 走看看