字符串的排列(全排列)
输入一个字符串,打印出该字符串中字符的所有排列。if not visited[i - 1] and i > 0 and s[i] == s[i - 1]: continue
Last updated
输入一个字符串,打印出该字符串中字符的所有排列。if not visited[i - 1] and i > 0 and s[i] == s[i - 1]:
continueLast updated
class Solution:
def permutation(self, s: str) -> List[str]:
def nextPermutation(nums: List[str]) -> bool:
i = len(nums) - 2
while i >= 0 and nums[i] >= nums[i + 1]:
i -= 1
if i < 0:
return False
else:
j = len(nums) - 1
while j >= 0 and nums[i] >= nums[j]:
j -= 1
nums[i], nums[j] = nums[j], nums[i]
left, right = i + 1, len(nums) - 1
while left < right:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right -= 1
return True
buf = sorted(s)
ret = [''.join(buf)]
while nextPermutation(buf):
ret.append(''.join(buf))
return ret