mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-04-29 12:16:14 -04:00
71 lines
1.1 KiB
Python
Executable File
71 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
__author__ = "bt3"
|
|
|
|
|
|
|
|
def perm(str1):
|
|
'''
|
|
>>> perm('123')
|
|
['123', '132', '231', '213', '312', '321']
|
|
'''
|
|
|
|
if len(str1) < 2:
|
|
return str1
|
|
|
|
res = []
|
|
for i, c in enumerate(str1):
|
|
for cc in perm(str1[i+1:] + str1[:i]):
|
|
res.append(c + cc)
|
|
return res
|
|
|
|
|
|
def perm2(str1):
|
|
'''
|
|
>>> perm2('123')
|
|
['123', '132', '213', '231', '312', '321']
|
|
'''
|
|
from itertools import permutations
|
|
return [''.join(p) for p in permutations(str1)]
|
|
|
|
|
|
def ispermutation(s1, s2):
|
|
'''
|
|
>>> ispermutation('231', '123')
|
|
True
|
|
>>> ispermutation('231', '153')
|
|
False
|
|
'''
|
|
|
|
from collections import Counter
|
|
aux = Counter()
|
|
for i in s1:
|
|
aux[i] += 1
|
|
for i in s2:
|
|
aux[i] -= 1
|
|
for v in aux.values():
|
|
if v != 0:
|
|
return False
|
|
return True
|
|
|
|
|
|
|
|
|
|
def ispermutation2(s1, s2):
|
|
'''
|
|
>>> ispermutation2('231', '123')
|
|
True
|
|
>>> ispermutation2('231', '153')
|
|
False
|
|
'''
|
|
if sorted(s1) == sorted(s2):
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
import doctest
|
|
doctest.testmod()
|