LeetCode_접속사
11727 단어 LetCode 문제 풀이
연결어의 정의는 다음과 같다. 하나의 문자열은 최소한 두 개의 주어진 그룹의 단어로 구성되어 있다.
예:
입력: ["cat", "cats", "catsdogcats", "dog", "dogcatsdog", "hippopotamuses", "rat", "ratcatdogcat"]
출력: ["catsdogcats", "dogcatsdog", "ratcatdogcat"]
설명: "catsdogcats는"cats","dog","cats"로 구성됩니다.'dogcatsdog'는'dog','cats'와'dog'로 구성된다."ratcatdogcat"은 "rat", "cat", "dog"과 "cat"로 구성되어 있습니다.설명:
주어진 그룹의 원소 총수는 10000을 넘지 않는다.주어진 그룹의 원소의 길이는 총 600000을 넘지 않습니다.모든 입력 문자열은 소문자만 포함합니다.답안 출력의 순서를 고려할 필요가 없다.
출처: 리코더 링크:https://leetcode-cn.com/problems/concatenated-words저작권은 인터넷 소유에 귀속된다.상업 전재는 관공서에 연락하여 권한을 수여하고 비상업 전재는 출처를 밝혀 주십시오.
접두사 트리
class Solution {
class TreeNode{
TreeNode[] list = new TreeNode[26];
boolean isEnd = false;
}
public void insert(TreeNode root,String[] words){
for(String word : words){
if(word==null || word.equals("")) continue;
TreeNode temp = root;
char[] array = word.toCharArray();
for(int i=0;i<array.length;i++){
int index = array[i]-'a';
if(temp.list[index]==null){
TreeNode tp = new TreeNode();
temp.list[index] = tp;
}
temp = temp.list[index];
}
temp.isEnd = true;
}
}
public boolean seach(TreeNode root, String word, int count, int index){
TreeNode temp = root;
for(int i=index;i<word.length();i++){
int pos = word.charAt(i) - 'a';
if(temp.list[pos] == null)
return false;
temp = temp.list[pos];
if(temp.isEnd && seach(root, word, count+1, i+1))
return true;
}
return count>0 && temp.isEnd;
}
public List<String> findAllConcatenatedWordsInADict(String[] words) {
List<String> list = new ArrayList<String>();
TreeNode root = new TreeNode();
insert(root,words);
for(String word : words){
if(seach(root,word,0,0)){
list.add(word);
}
}
return list;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
*Leetcode 813. Largest Sum of Averages | dp#initial-loading { position: fixed; top: 0; left: 0; right: 0; bottom: 0; display: flex; align-items: center; justify-co...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.