【LeetCode】291.Word Pattern II(Hard)解题报告
2018-01-30 16:11
501 查看
【LeetCode】291.Word Pattern II(Hard)解题报告
题目地址:https://leetcode.com/problems/word-pattern-ii/
题目描述:
Given a pattern and a string str, find if str follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty substring in str.
Examples:
pattern = “abab”, str = “redblueredblue” should return true.
pattern = “aaaa”, str = “asdasdasdasd” should return true.
pattern = “aabb”, str = “xyzabcxzyabc” should return false.
Notes: You may assume both pattern and str contains only lowercase letters.
Solution:
Date:2018年1月30日
题目地址:https://leetcode.com/problems/word-pattern-ii/
题目描述:
Given a pattern and a string str, find if str follows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty substring in str.
Examples:
pattern = “abab”, str = “redblueredblue” should return true.
pattern = “aaaa”, str = “asdasdasdasd” should return true.
pattern = “aabb”, str = “xyzabcxzyabc” should return false.
Notes: You may assume both pattern and str contains only lowercase letters.
Solution:
//Edward shi //实现题,就是backtracking,没有什么特别的技巧 public boolean wordPatterMatch(String pattern,String str){ HashMap<Character,String> map = new HashMap<>(); HashSet<String> set = new HashSet<>(); return isMatch(str,0,pattern,0,map,set); } private boolean isMatch(String str,int i,String pattern,int j,HashMap<Character,String> map,HashSet<String> set){ if(str.length() == i && j == pattern.length()) return true; if(str.length() == i || j == pattern.length()) return false; char c = pattern.charAt(j); if(map.containsKey(c)){ String s = map.get(C); if(!str.startsWith(s,j)){ return false; } return isMatch(str,i+s.length(),pattern,j+1,map,set); } for(int k=i ; k<str.length();k++){ String p = str.substring(i,k+1); if(set.contains(p)){ continue; } map.put(c,p); set.add(p); if(isMatch(str,k+1,pattern,j+1,map,set)){ return true; } map.remove(c); set.remove(p); } }
Date:2018年1月30日
相关文章推荐
- [leetcode] 291. Word Pattern II 解题报告
- [Leetcode] 291. Word Pattern II 解题报告
- [Leetcode] 244. Shortest Word Distance II 解题报告
- LeetCode — Word Break II 解题报告
- [leetcode]126. Word LadderII@Java解题报告
- [LeetCode291]Word Pattern II
- LeetCode 291. Word Pattern II(单词模式II)
- 【LeetCode】Word Break II 解题报告
- [Leetcode] 126. Word Ladder II 解题报告
- [Leetcode] 140. Word Break II 解题报告
- [leetcode] 212. Word Search II 解题报告
- LeetCode解题报告—— Word Search & Subsets II & Decode Ways
- 【LeetCode】244.Shortest Word Distance II(Medium)解题报告
- [leetcode] 126. Word Ladder II 解题报告
- 【LeetCode】Word Search II 解题报告
- 【LeetCode】Word Pattern 解题报告
- LeetCode 291. Word Pattern II
- leetcode 解题报告 Word Ladder II
- LeetCode-Word Search II-解题报告
- Leetcode 126. Word Ladder II 字符变换2 解题报告