899. Orderly Queue

선택한 UI 언어에 맞게 문제 텍스트를 러시아어에서 번역합니다. 코드는 변경하지 않습니다.

Вам дана 문자열 s и 정수 k. Вы можете выбрать одну из первых k букв s и добавить ее в конец строки. return лексико그래프ически наименьшую строку, которая может получиться после Applications указанного шага за любое количество ходов.

예제:

Input: s = "cba", k = 1

Output: "acb"

C# 해법

매칭됨/원본
using 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++ 해법

자동 초안, 제출 전 검토
#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 해법

자동 초안, 제출 전 검토
import 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 해법

매칭됨/원본
package 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 лексико그래프ически наименьшую строку путем вращения строки и поиска минимального варианта.

Если k больше 1, отсортировать строку, так как любое количество перемещений позволит упорядочить все символы в строке.

Вернуть результат.

😎

Vacancies for this task

활성 채용 with overlapping task tags are 표시됨.

전체 채용
아직 활성 채용이 없습니다.