[プログラマー]コードテスト練習-ハッシュレベル2電話番号リスト
Solution.java class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
Trie trie = new Trie();
for (String phone : phone_book) {
if (!trie.insert(phone)) {
answer = false;
break;
}
}
return answer;
}
}
class Node {
boolean exist;
Node[] child;
Node() {
exist = false;
child = new Node[10];
}
}
class Trie {
Node root;
Trie() {
root = new Node();
}
boolean insert(String phone) {
int length = phone.length();
Node node = root;
for (int i = 0; i < length; i++) {
int num = phone.charAt(i) - '0';
if (node.child[num] == null) {
node.child[num] = new Node();
}
else {
if (i == length - 1) return false;
}
node = node.child[num];
if (node.exist) return false;
}
node.exist = true;
return true;
}
}
問題を見ると、テリーを思い出して、テリーで解決しました.
他人の解答から見ると、これはただ考えやすい問題にすぎない.
数が少ないので、ドアを回しても効率よく通れます.
これはハッシュの問題ですが、ハッシュの使い方はまだ分かりません.
他の人の説明を通じてstartsWithという方法について新しい理解が得られた.
出典:プログラマーコードテスト練習、https://programmers.co.kr/learn/challenges
Reference
この問題について([プログラマー]コードテスト練習-ハッシュレベル2電話番号リスト), 我々は、より多くの情報をここで見つけました
https://velog.io/@hye07on11/프로그래머스-코딩테스트-연습-해시-Level-2-전화번호-목록
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
Trie trie = new Trie();
for (String phone : phone_book) {
if (!trie.insert(phone)) {
answer = false;
break;
}
}
return answer;
}
}
class Node {
boolean exist;
Node[] child;
Node() {
exist = false;
child = new Node[10];
}
}
class Trie {
Node root;
Trie() {
root = new Node();
}
boolean insert(String phone) {
int length = phone.length();
Node node = root;
for (int i = 0; i < length; i++) {
int num = phone.charAt(i) - '0';
if (node.child[num] == null) {
node.child[num] = new Node();
}
else {
if (i == length - 1) return false;
}
node = node.child[num];
if (node.exist) return false;
}
node.exist = true;
return true;
}
}
Reference
この問題について([プログラマー]コードテスト練習-ハッシュレベル2電話番号リスト), 我々は、より多くの情報をここで見つけました https://velog.io/@hye07on11/프로그래머스-코딩테스트-연습-해시-Level-2-전화번호-목록テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol