Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธาหา Permutations ทั้งหมดของ String ใน Python

ใช้โมดูล itertools ซึ่งมีเมธอด permutations(iterable[, r]) คืนค่าเป็น tuples ต้อง join เพื่อได้สตริง

ตัวอย่าง: ใช้ itertools.permutations

>> from itertools import permutations
>>> [''.join(p) for p in permutations('dune')]
['dune', 'duen', 'dnue', 'dneu', 'deun', 'denu', 'udne', 'uden', 'unde', 'uned', 'uedn', 'uend', 'ndue', 'ndeu', 'nude', 'nued', 'nedu', 'neud', 'edun', 'ednu', 'eudn', 'eund', 'endu', 'enud']

วิธีเขียนเองแบบ Recursive

def permutations(string, step=0):
    if step == len(string):
        print("".join(string))
    for i in range(step, len(string)):
        string_copy = [c for c in string]
        string_copy[step], string_copy[i] = string_copy[i], string_copy[step]
        permutations(string_copy, step + 1)

permutations('one')

ผลลัพธ์

one
oen
noe
neo
eno
eon