ab -> [a, b] -> ba
hefg -> [e, f, g, h] -> he(gf)
dkhc -> [c, d, h, k] -> dk(ch) False -> d(khc) False -> h(cdk)
from itertools import permutations
str_list = [''.join(p) for p in permutations('string')]
def biggerIsGreater(w):
# 문자를 문자 리스트로 변환
str_list = list(w)
# 뒤에서부터 비교하는데 뒤에 있는 문자가 앞에 있는 문자보다 작은 경우를 찾음
length = len(str_list) - 1
while length > 0 and str_list[length-1] >= str_list[length]:
length -= 1
# 만약 length가 0이하면 더이상 작은 것도 없다는 것을 의미함
if length <= 0:
return "no answer"
# 바꿔야 하는 문자열을 찾음
second_len = len(str_list) - 1
while str_list[second_len] <= str_list[length-1]:
second_len -= 1
# 바꿔줌
str_list[length-1], str_list[second_len] = str_list[second_len], str_list[length-1]
# 그 뒤에있는 것들을 오름차순으로 새롭게 정렬함
second_len = len(str_list) - 1
while length < second_len:
str_list[length], str_list[second_len] = str_list[second_len], str_list[length]
length += 1
second_len -= 1
return "".join(str_list)