新聞中心
題目描述:
在武漢等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需求定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),全網(wǎng)營(yíng)銷推廣,成都外貿(mào)網(wǎng)站制作,武漢網(wǎng)站建設(shè)費(fèi)用合理。設(shè)計(jì)一個(gè)程序,當(dāng)輸入一個(gè)字符串時(shí),要求輸出這個(gè)字符串的所有排列。
例如輸入字符串 abc,要求輸出由字母 a、b、c 所能排列出來的所有字符串 abc,acb,bac,bca,cab,cba。
方法:遞歸法
以字符串 abc 為例介紹對(duì)字符串進(jìn)行全排列的方法。
(1) 首先固定第一個(gè)字符 a,然后對(duì)后面的兩個(gè)字符 b、c 進(jìn)行全排列;
(2) 交換第一個(gè)字符與其后面的字符,即交換 a 與 b,然后對(duì)后面的兩個(gè)字符 a與c 進(jìn)行全排列;
(3) 由于第二步交換了 a與b 破壞了字符串原來的順序,所以需要再次交換 a與b 使其恢復(fù)到原來的順序,然后交換第一個(gè)字符與第三個(gè)字符(交換a和c),接著固定第一個(gè)字符c,對(duì)后面的兩個(gè)字符 a與b 求全排列。
在對(duì)字符串求全排列的時(shí)候就可以采用遞歸的方式求解。
在使用遞歸求解的時(shí)候,要注意:
(1) 逐漸縮小問題的規(guī)模,并且可以用同樣的方法來求解子問題;
(2) 遞歸一定要有結(jié)束條件,否則會(huì)導(dǎo)致程序陷入死循環(huán);
代碼實(shí)現(xiàn):
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Time : 2020/2/3 9:49 # @Author : buu # @Software: PyCharm # @Blog :https://blog.csdn.net/weixin_44321080 def swap(str, i, j): # 交換字符數(shù)組下標(biāo)為i和j對(duì)應(yīng)的字符 tmp = str[i] str[i] = str[j] str[j] = tmp def permutation(str, start): """ 對(duì)字符串中的字符進(jìn)行全排列 :param str: 待排序的字符串,list :param start: 待排序的子字符串的首字符下標(biāo) :return: """ if str == None or start < 0: return if start == len(str) - 1: # 完成全排列后輸出當(dāng)前排列的字符串 print(''.join(str),end=' ') else: i = start while i < len(str): # 交換start與i所在位置的字符 swap(str, start, i) # 固定第一個(gè)字符,對(duì)剩余的字符進(jìn)行全排列 permutation(str, start + 1) # 還原start與i所在位置的字符 swap(str, start, i) i += 1 def permutation_transe(s): str = list(s) permutation(str, 0) if __name__ == '__main__': s = 'abc' permutation_transe(s)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前文章:python求一個(gè)字符串的所有排列的實(shí)現(xiàn)方法-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://fisionsoft.com.cn/article/dhcges.html