899. Orderly Queue
Le texte du problème est traduit du russe pour la langue sélectionnée. Le code reste inchangé.
Вам дана chaîne s и entier k. Вы можете выбрать одну из первых k букв s и добавить ее в конец строки. return лексикоgrapheически наименьшую строку, которая может получиться после Applications указанного шага за любое количество ходов.
Exemple:
Input: s = "cba", k = 1
Output: "acb"
C# solution
correspondant/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++ solution
brouillon automatique, à relire avant soumission#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 solution
brouillon automatique, à relire avant soumissionimport 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 solution
correspondant/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 лексикоgrapheически наименьшую строку путем вращения строки и поиска минимального варианта.
Если k больше 1, отсортировать строку, так как любое количество перемещений позволит упорядочить все символы в строке.
Вернуть результат.
😎
Vacancies for this task
offres actives with overlapping task tags are affichés.
Il n'y a pas encore d'offres actives.