前缀树

题目

给定一个字符串数组,其中不含有重复字符串,判断是否有字符串是另一个字符串的前缀

思路

实现前缀树即可,判断是否是前缀树要么就是我一直在别人的路上走,要么就是我还没走完,遇到了别人的结尾。

代码

import java.util.HashMap;

public class Solution{
    public boolean hasPrefix(String[] strs){
        Tries tries=new Tries();
        for(String str:strs){
            if(tries.AddAndCheck(str.toCharArray(),0))
                return true;
        }
        return false;
    }
}
class Tries {
    HashMap<Character,Tries> children=new HashMap<Character, Tries>();
    boolean end=false;
    public boolean AddAndCheck(char[] chars,int i){
        if(end)
            return true;
        if(i==chars.length){
            end=true;
            return !children.isEmpty();
        }
        if(!children.containsKey(chars[i])){
            children.put(chars[i],new Tries());
        }
        return children.get(chars[i]).AddAndCheck(chars,i+1);
    }
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容