動機

這種找規律的真的好難,就像魔法一樣

Problem

You are given a string s and an integer k. You can choose one of the first k letters of s and append it at the end of the string..

Return the lexicographically smallest string you could have after applying the mentioned step any number of moves.

 

Example 1:

Input: s = "cba", k = 1Output: "acb"Explanation: In the first move, we move the 1st character 'c' to the end, obtaining the string "bac".In the second move, we move the 1st character 'b' to the end, obtaining the final result "acb".

Example 2:

Input: s = "baaca", k = 3Output: "aaabc"Explanation: In the first move, we move the 1st character 'b' to the end, obtaining the string "aacab".In the second move, we move the 3rd character 'c' to the end, obtaining the final result "aaabc".

 

Constraints:

  • 1 <= k <= s.length <= 1000
  • s consist of lowercase English letters.

Sol

s只有1就是rotate,那就是一直試

s有1以上就變成bubble sort的冒泡泡了

class Solution:
    def orderlyQueue(self, s: str, k: int) -> str:
        if k == 1:
            ret = s
            tmp = s
            for _ in range(len(s)):
                tmp = tmp[1:]+tmp[0]
                if tmp < ret:
                    ret = tmp
            return ret
        else:
            return ''.join(sorted(s))