安全性を証明するためのご提供変更(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」シリーズのニュース記事を、あなたの関心を歓迎します!