プログラマ[独自の方法で文字列を並べる]

6395 ワード

文字列内の任意のソート


問題の説明


リスト文字列が文字列で構成され、整数nを有する場合、各文字列のインデックスnのn番目の文字に基づいて昇順にソートしようとします.たとえば、文字列が[sun,bed,car]であり、nが1である場合、文字列は単語インデックス1の各文字u,e,aに並べ替えられる.

せいげんじょうけん

  • 文字列の長さは1より大きく、50より小さい.
  • 文字列の要素は小文字で構成されています.
  • 文字列の要素の長さは1より大きく、100より小さい.
  • すべての文字列の要素長はnより大きい.
  • インデックス1の複数の文字が同じ文字列である場合、アルファベット順に並べられた先頭文字列が先頭に配置されます.
  • I/O例


    stringsnreturn[sun, bed, car]1[car, bed, sun][abce, abcd, cdx]2[abcd, abce, cdx]

    I/O例1


    sun,bed,carの最初のインデックス値はそれぞれu,e,aである.文字列を揃えると[car,bed,sun]になります.

    I/O例2


    abceおよびabcdおよびcdxの2番目のインデックス値は、c、cおよびxである.したがって、cdxは、ソート後に最後に位置する.abceとabcdはアルファベット順に並べられ、abcdが優先されるため、答えは[abcd、abce、cdx]である.
    import java.util.*;
    
    class Solution {
        public Object[] solution(String[] strings, int n) {
            
            return Arrays.stream(strings)
                        .sorted() //사전순 정룔
                        .sorted((a, b) -> (a.substring(n, n+1)).compareTo(b.substring(n, n+1)))
                        .toArray();
        }
    }
    function solution(strings, n) {
        var answer = [];
        return strings.sort().sort((a, b) => {
            a = a.substr(n, 1);
            b = b.substr(n, 1);
            if(a > b) return 1;
            else if(a < b) return -1;
            else return 0;
        });
    }