899. Orderly Queue
O texto da tarefa é traduzido do russo para o idioma selecionado. O código permanece sem alterações.
Вам дана string s и inteiro k. Вы можете выбрать одну из первых k букв s и добавить ее в конец строки. return лексикоgrafoически наименьшую строку, которая может получиться после Applications указанного шага за любое количество ходов.
Exemplo:
Input: s = "cba", k = 1
Output: "acb"
C# solução
correspondente/originalusing System;
using System.Linq;
public class Solution {
public string OrderlyQueue(string s, int k) {
if (k == 1) {
string minString = s;
for (int i = 1; i < s.Length; i++) {
string rotated = s.Substring(i) + s.Substring(0, i);
if (rotated.CompareTo(minString) < 0) {
minString = rotated;
}
}
return minString;
} else {
return new string(s.OrderBy(c => c).ToArray());
}
}
}
C++ solução
rascunho automático, revisar antes de enviar#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public string OrderlyQueue(string s, int k) {
if (k == 1) {
string minString = s;
for (int i = 1; i < s.size(); i++) {
string rotated = s.Substring(i) + s.Substring(0, i);
if (rotated.CompareTo(minString) < 0) {
minString = rotated;
}
}
return minString;
} else {
return new string(s.OrderBy(c => c).ToArray());
}
}
}
Java solução
rascunho automático, revisar antes de enviarimport java.util.*;
import java.math.*;
// Auto-generated Java draft from the C# solution. Review API differences before LeetCode submit.
public class Solution {
public String OrderlyQueue(String s, int k) {
if (k == 1) {
String minString = s;
for (int i = 1; i < s.length; i++) {
String rotated = s.Substring(i) + s.Substring(0, i);
if (rotated.CompareTo(minString) < 0) {
minString = rotated;
}
}
return minString;
} else {
return new String(s.OrderBy(c => c).ToArray());
}
}
}
Go solução
correspondente/originalpackage main
import (
"sort"
"strings"
)
func orderlyQueue(s string, k int) string {
if k == 1 {
minString := s
for i := 1; i < len(s); i++ {
rotated := s[i:] + s[:i]
if rotated < minString {
minString = rotated
}
}
return minString
} else {
sArr := strings.Split(s, "")
sort.Strings(sArr)
return strings.Join(sArr, "")
}
}
Algorithm
Если k равно 1, find лексикоgrafoически наименьшую строку путем вращения строки и поиска минимального варианта.
Если k больше 1, отсортировать строку, так как любое количество перемещений позволит упорядочить все символы в строке.
Вернуть результат.
😎
Vacancies for this task
vagas ativas with overlapping task tags are mostradas.
Ainda não há vagas ativas.