899. Orderly Queue
Il testo del problema è tradotto dal russo per la lingua selezionata. Il codice resta invariato.
Вам дана stringa s и intero k. Вы можете выбрать одну из первых k букв s и добавить ее в конец строки. return лексикоgrafoически наименьшую строку, которая может получиться после Applications указанного шага за любое количество ходов.
Esempio:
Input: s = "cba", k = 1
Output: "acb"
C# soluzione
abbinato/originaleusing 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++ soluzione
bozza automatica, rivedere prima dell'invio#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 soluzione
bozza automatica, rivedere prima dell'invioimport 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 soluzione
abbinato/originalepackage 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
offerte attive with overlapping task tags are mostrati.
Non ci sono ancora offerte attive.