[プログラマー]電話番号リスト



質問リンク
https://programmers.co.kr/learn/courses/30/lessons/42577?language=java

📂 ぶんかつ

문자열 정렬

💡 に答える


電話番号配列を並べ替える場合、パラメータはstringなので大きさ順ではなくアルファベット順で並べ替えることができます.
これは、現在の値が次の値の接頭辞に含まれているかどうかを確認するための問題です.
配列を["31", "13", "123", "3123145"]と仮定します.
指定された配列をソートする場合、["123", "13", "31", "3123145"]などの辞書順にソートされます.
したがって、phone_bookをソートし、for文を使用してphone_book[i]phone_book[i + 1]が含まれているかどうかを確認することができる.

💻 コード#コード#

  • cppコード
  • #include <bits/stdc++.h>
    
    using namespace std;
    
    bool solution(vector<string> phone_book) {
        sort(phone_book.begin(), phone_book.end());
        for (int i = 0; i < phone_book.size() - 1; i++) {
            if (phone_book[i] == phone_book[i + 1].substr(0, phone_book[i].length()))
                return false;
        }
        return true;
    }
  • javaコード
  • import java.util.*;
    
    class Solution {
        public boolean solution(String[] phone_book) {
            Arrays.sort(phone_book);
            for (int i = 0; i < phone_book.length - 1; i++) {
                if (phone_book[i + 1].startsWith(phone_book[i]))
                    return false;
            }
            return true;
        }
    }
    ジャワに変えるために、ジャワで解き始めました.