Question

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:

  1. pattern = "abab", str = "redblueredblue" should return true.
  2. pattern = "aaaa", str = "asdasdasdasd" should return true.
  3. pattern = "aabb", str = "xyzabcxzyabc" should return false.

Notes:
You may assume both pattern and str contains 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;
}
}

最新文章

  1. Android Studio使用Git版本控制工具
  2. Linux mke2fs 硬盘格式化
  3. Linux 信号详解一(signal函数)
  4. java.util.Date和java.sql.Date的区别和相互转化(转)
  5. Web离线存储的几种方式
  6. 19.python笔记之Rabbitmq
  7. JavaScript-闭包注意事项
  8. hdu 4686 Arc of Dream
  9. Scala应用函数
  10. webstorm 如何配置git
  11. jenkins如何获取gitlab上的代码
  12. 用于文本分类的多层注意力模型(Hierachical Attention Nerworks)
  13. JAVA核心技术I---JAVA基础知识(抽象类和接口)
  14. zookeeper的Java端API应用
  15. [Version Control]—— Git如何使用
  16. 关于singleton的几个实现
  17. mongoDB的使用(NodeJs)
  18. springboot 使用c3p0数据库连接池
  19. jquery ajax 请求中 中文汉字的 转码问题
  20. Potplayer快捷键

热门文章

  1. ssh秘钥交换详解与实现 diffie-hellman-group-exchange-sha
  2. 今天弄了整整一天DCloud
  3. Html中版权符号的字体选择问题(如何让版权符号更美观)
  4. android中使用哪种方式解析XML比較好
  5. 【leetcode】Merge k Sorted Lists(按大小顺序连接k个链表)
  6. 使用HashMap对象传递url參数有用工具类
  7. C#调用Java代码
  8. Sass函数--map
  9. 当chm文档点击左侧,右侧无内容时的解决方案
  10. poj2251 三维简单BFS