安全性を証明するためのご提供変更(XXVII):文字列のアラインメント

安全性を証明するためのご提供変更(XXVII):文字列のアラインメント

検索マイクロチャネル公共番号:「AI-ming3526」以上のアルゴリズム、機械学習のための「この小さなコンピュータビジョン」、ドライ
CSDN:https://blog.csdn.net/baidu_31657889/
GitHubの:https://github.com/あいみ-CN / AILearners

まず、プライマー

このシリーズは、独自のアルゴリズムの下で能力を強化することを目指して、オンラインの質問ノートの牛をはねのける「安全オファーを証明するために、」私のブラシです。
:解決オファーCSDNとgithubのリンクをクリックして、安全性の問題を証明するために、完全なアルゴリズムを見る
安全オファーを証明する完全な分析演習CSDNアドレス
githubのアドレス

第二に、タイトル

文字列の入力は、辞書式順序で文字列の文字のすべての順列を出力します。例えば、入力文字列abcの場合は、ABCのすべての文字列、B、Cが出て配置することができ、ACB、BAC、BCA、CABおよびCBAを印刷します。

説明を入力します。

9(おそらく繰り返し文字)以下での文字列を入力し、文字は小文字のみが含まれます。

1、アイデア

再帰、最初の文字に第1の固定問題は、残りの文字は、リクエストに配置され、残りの文字を用いて評価した場合、元の問題のように配置されています。

(1)横断するすべての可能な位置は、最初の文字(すなわち、最初の文字の順番は、すべての後続の文字と交換)に現れます。

(2)最初の文字の後ろに配置された文字を探しているが(すなわち:ステップ1のトラバーサル中に、再帰的に実施挿入)定着。

2、プログラミング

パイソン

コードの実装:

# -*- coding:utf-8 -*-
class Solution:
    def Permutation(self, ss):
        # write code here
        if len(ss) <=1:
            return ss
        res = set()
        #  遍历字符串,固定第一个元素,第一个元素可以取a,b,c...,然后递归求解
        for i in range(len(ss)):
            # 使用排序算法 字符串是除了固定的那个字符 依次固定了元素,其他的全排列(递归求解)
            for j in self.Permutation(ss[:i] + ss[i+1:]):
                # 集合添加元素的方法add(),集合添加去重(若存在重复字符,排列后会存在相同,如baa,baa)
                res.add(ss[i] + j)
        # sorted()能对可迭代对象进行排序,结果返回一个新的list
        return sorted(res)

AIの詳細については、AIMI-CN AI学習交換基[1015286623]

技術、生活の中で楽しく共有:公共の私達の数コンピュータビジョンこの小さな週プッシュ「AI」シリーズのニュース記事を、あなたの関心を歓迎します!

おすすめ

転載: www.cnblogs.com/aimi-cn/p/11454412.html