Word Pattern II 解答
2015-11-07 23:31
267 查看
Question
Given apatternand a string
str, find if
strfollows the same pattern.
Here follow means a full match, such that there is a bijection between a letter in
patternand 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
patternand
strcontains only lowercase letters.
Solution
Word Pattern 是用HashMap的containsKey()和containsValue()两个方法实现的。但是对于Word Pattern II,我们并不知道怎样划分str,所以基本想法是“暴力搜索”即backtracking/DFS。这里DFS的存储对象不是常见的list,而是map.
public class Solution { public boolean wordPatternMatch(String pattern, String str) { return helper(pattern, 0, str, 0, new HashMap<Character, String>()); } private boolean helper(String pattern, int startP, String str, int startS, Map<Character, String> map) { if (startP == pattern.length() && startS == str.length()) { return true; } else if (startP == pattern.length()) { } if (match.equals(str.substring(startS, endS))) { return helper(pattern, startP + 1, str, endS, map); } else { return false; } } else { // If map does not have existing key // Traverse, brute force for (int i = startS + 1; i <= str.length(); i++) { String candidate = str.substring(startS, i); if (map.containsValue(candidate)) { continue; } map.put(key, candidate); if (helper(pattern, startP + 1, str, i, map)) { return true; } map.remove(key); } } return false; } }
相关文章推荐
- Parallel Programming-Paralle.For && ForEach
- Akka.net开发第一个分布式应用
- 认识smack3.0.4基本对象——From
- ZOJ 2970 水(F)
- c语言之const理解
- 【分享】PRIMAL×HEARTS1+2 (プライマルハーツ‐)【日文硬盘版】(带全CG存档&日文攻略+打开存档补丁
- 那些人生最重要的转折点
- latex调整字符间距 调整字距
- [RabbitMQ] Connection failed
- 黑马程序员——多线程--线程的创建方式和线程安全的简单介绍
- 解决VS2010链接错误:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- swift:打造你自己的折线图
- Sublime Text3注册码(可用)
- Git学习札记
- Day 5(11.7):(4)运算符及函数
- OpenGL ES 3.0之Texturing纹理详解(一)
- [转]lsof详解
- Swift 自定义炫酷下拉刷新效果
- 诗友赐玉
- Xcode真机测试could not find developer disk image解决方法