• 【剑指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也就是空了,就可以结束了。

  • 相关阅读:
    Beans
    HDU2830
    HDU1176
    rtc关机闹钟7 jni层 com_android_server_AlarmManagerService
    rtc关机闹钟6 AlarmManagerService研究
    rtc关机闹钟5 AlarmManager研究
    数论学习_裴蜀定理
    hdu-5465-二维BIT+nim
    hdu-1892-二维BIT
    hdu-2227-dp+bit
  • 原文地址:https://www.cnblogs.com/tianqizhi/p/9732384.html
Copyright © 2020-2023  润新知