Сложность: hard
Вам дана строка s и целое число k. Вы можете выбрать одну из первых k букв s и добавить ее в конец строки. Верните лексикографически наименьшую строку, которая может получиться после применения указанного шага за любое количество ходов.
Пример:
Input: s = "cba", k = 1
Output: "acb"
👨💻 Алгоритм:
1⃣Если k равно 1, найти лексикографически наименьшую строку путем вращения строки и поиска минимального варианта.
2⃣Если k больше 1, отсортировать строку, так как любое количество перемещений позволит упорядочить все символы в строке.
3⃣Вернуть результат.
😎 Решение:
func orderlyQueue(_ s: String, _ k: Int) -> String {
if k == 1 {
let sArr = Array(s)
var minString = s
for i in 1..<sArr.count {
let rotated = String(sArr[i...] + sArr[..<i])
if rotated < minString {
minString = rotated
}
}
return minString
} else {
return String(s.sorted())
}
}Ставь 👍 и забирай 📚 Базу знаний