首页 > 其他 > 详细

<BackTracking> (dfs hard) 291

时间:2020-01-11 10:41:09      阅读:70      评论:0      收藏:0      [点我收藏+]

291. Word Pattern II

class Solution {
    public boolean wordPatternMatch(String pattern, String str) {
        Map<Character, String> map = new HashMap<>();
        return dfs(map, pattern, str);
    }
    
    private boolean dfs(Map<Character, String> map,  String pattern, String str){
        //出口
        if(pattern.length() == 0){
            return str.length() == 0;
        }
        
        char c = pattern.charAt(0);
        if(map.containsKey(c)){
            if(!str.startsWith(map.get(c))){
                return false;
            }else{
                return dfs(map, pattern.substring(1), str.substring(map.get(c).length()));
            }
        }
        
        //map 里没有c
        for(int i = 0; i < str.length(); i++){
            String word = str.substring(0, i + 1);
            if(map.containsValue(word)) continue;
            map.put(c, word);
            if(dfs(map, pattern.substring(1), str.substring(i + 1))){
                return true;
            }
            map.remove(c);
        }
        return false;

    }
}

<BackTracking> (dfs hard) 291

原文:https://www.cnblogs.com/Afei-1123/p/12179051.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!