[プログラマー]電話番号リスト
2005 ワード
📌 質問する
電話帳の電話番号の中に、別の番号のプレフィックスがあるかどうかを確認します.
電話番号が次の場合:
救助隊:119
朴俊英:97674223
池英錫:119552421
電話帳の電話番号が電話番号の配列phone bookをソリューション関数のパラメータとする場合、ある番号が別の番号の接頭辞である場合は、falseでない場合はtrueを返します.
[制限]
○phone bookの長さは1以上1000000以下です.
各電話番号の長さは1または20以下です.
💡 プール(Java)
import java.util.Arrays;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
//배열을 정렬
Arrays.sort(phone_book);
//startWith로 index바로 인접한 것들끼리 비교
for (int i = 0; i < phone_book.length-1; i++) {
if(phone_book[i+1].startsWith(phone_book[i])){
answer=false;
};
}
return answer;
}
}
最初は、すべての配列要素と比較すべきだと思いましたが、sort機能で隣接する1つを比較するだけでいいので、より効率的なコードになります.他の人の解答の中でhashで解読するのも参考になるようです.(テストの結果、startWithを使用した方が解答速度が速いことがわかりました)import java.util.HashMap;
import java.util.Map;
class Solution {
public boolean solution(String[] phoneBook) {
boolean answer = true;
//HashMap에 전화번호 문자열 key 저장
Map<String, Integer> map = new HashMap<>();
for(int i = 0; i < phoneBook.length; i++) {
map.put(phoneBook[i], i);
}
//각 전화번호의 접두사가 HashMap에 존재하는지 확인
for(int i = 0; i < phoneBook.length; i++) {
for(int j = 0; j < phoneBook[i].length(); j++) {
if(map.containsKey(phoneBook[i].substring(0,j))) {
answer = false;
return answer;
}
}
}
return answer;
}
}
Reference
この問題について([プログラマー]電話番号リスト), 我々は、より多くの情報をここで見つけました https://velog.io/@gombibi/프로그래머스전화번호-목록テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol