Word Pattern II
要点:

  • 注意与I的差异,其实题不难,看到这种迷乱的,首先要想到backtrack
  • 1:1 mapping两个条件:p in and str in, or p not in and str not in values().

错误点:

  • false的退出条件是pattern没有足够字符1:1了(i.e., len(pattern)>len(str)),但true的条件是pattern和str都比完了

https://repl.it/CekC/1

# 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.# Hide Company Tags Dropbox Uber
# Hide Tags Backtracking
# Hide Similar Problems (E) Word Patternclass Solution(object):def wordPatternMatch(self, pattern, str):""":type pattern: str:type str: str:rtype: bool"""pattern_map = {}def helper(pattern, str):if not pattern and not str:return Trueif not pattern or not str:return Falseif len(pattern)>len(str):return Falsep = pattern[0]if p in pattern_map:if str[:len(pattern_map[p])]!=pattern_map[p]:return Falseelse:return helper(pattern[1:], str[len(pattern_map[p]):])for i in xrange(len(str)):substr = str[:i+1]if substr not in pattern_map.values():pattern_map[p]=str[:i+1]if helper(pattern[1:], str[i+1:]):return Truedel pattern_map[p]return Falsereturn helper(pattern, str)sol = Solution()
assert sol.wordPatternMatch("abab", "redblueredblue")==True, "must be True"
assert sol.wordPatternMatch("aaaa", "asdasdasdasd")==True, "must be True"
assert sol.wordPatternMatch("aabb", "xyzabcxzyabc")==False, "must be False"

转载于:https://www.cnblogs.com/absolute/p/5815784.html

边工作边刷题:70天一遍leetcode: day 86相关推荐

  1. 边工作边刷题:70天一遍leetcode: day 94-1

    Largest BST Subtree 要点: http://articles.leetcode.com/largest-binary-search-tree-bst-in 这题重点是理解题意,还有道 ...

  2. 边工作边刷题:70天一遍leetcode: day 11-2

    Gas Station 老题,这种circular的题一般都能转化成单向的.比如这题就是用sumDiff来判断是否有解,而start单向递增. class Solution(object):def c ...

  3. 边工作边刷题:70天一遍leetcode: day 92

    House Robber I/II/III 这题代表了单向线性dp的基本pattern: build local best value at each element and track the gl ...

  4. 边工作边刷题:70天一遍leetcode: day 98

    LRU Cache 这是一道leetcode的难题,这种题往往是算法结构很复杂,涉及一个或多个考点算法和数据结构的组合,同时又有很多corner cases要考虑.所以一定要找到合适memorize的 ...

  5. 边工作边刷题:70天一遍leetcode: day 97-2

    Design Hit Counter 要点:因为是second granularity,所以可以用以秒为单位的circular buffer方法.这题简单在只需要count过去300秒的,增加难度可以 ...

  6. 边工作边刷题:70天一遍leetcode: day 73

    Read N Characters Given Read4 I/II 要点:这题的要点就是搞清楚几个变量的内在逻辑:只有buffer是整4 bytes的.而client要读的bytes(需求)和实际上 ...

  7. 边工作边刷题:70天一遍leetcode: day 7

    Max Points on a Line 要点:这题暴力解是用任何两点确定一条直线,然后对其他点检查是否共线,显然,这里没用空间来存储之前的检查结果,所以time complexity是O(n^3). ...

  8. 边工作边刷题:70天一遍leetcode: day 67-1

    Rectangle Area 要点:基本思路就是先分开算再减去相交部分,这题的难点是如何检查是否相交和如何算出相交部分的面积. 2d转化为1d:x轴和y轴是orthogonal的.可以分开考虑.这样检 ...

  9. 边工作边刷题:70天一遍leetcode: day 6

    Compare Version Numbers 题本身思路简单没什么可说的.值得一提的是corner case:多出来的0和没有是相同版本,这样最简单的处理是直接对没有的补0.这样因为需要补齐,循环是 ...

最新文章

  1. redis之rehash原理
  2. C++之‘nullptr’ was not declared in this scope
  3. 蓝桥杯 n进制小数
  4. python版本回退_Python爬虫之BeautifulSoup解析之路
  5. 阿里+北大 | 在梯度上做简单mask竟有如此的神奇效果
  6. 转载:c# serialport类 串口通信 hello world
  7. 300字总结计算机flash,Flash学习心得体会范文
  8. 高斯过程、高斯过程回归、克里金模型
  9. Mysql中有关Datetime和Timestamp的使用总结
  10. Linux命令行下,颜色表示什么意思
  11. 什么是云迁移?云迁移的四种模式分别是?
  12. weblogic安装与配置注意事项
  13. MySQL练习题(4)
  14. python中rgb颜色_自定义RGB颜色与Python诅咒
  15. frp:开源内网穿透工具
  16. 5G标准协议中的简写和缩略语
  17. leetcode-004-0811. 硬币
  18. 【最新版】愚人节整人软件大全
  19. wgs84坐标格式转换度分秒_使用ArcGIS实现WGS84经纬度坐标到北京54高斯投影坐标的转换...
  20. VS2015 通过Shockwave Flash Object 播放flash

热门文章

  1. TI | TM4C系列单片机中断配置方法
  2. Anaconda + tensorflow + win10 安装
  3. VUE学习(七) 自定义列表鼠标移入变色,点击变色(仿el-table实现)
  4. matlab 模拟关键词推广,关键词推广系统
  5. linux中文输入法 2017,ubuntu 16.04 下安装并切换搜狗中文输入法
  6. 金山翻译很方便离线翻译
  7. 删除Mac自带的 ABC 输入法?
  8. EAUML日拱一卒-微信小程序实战:位置闹铃 (16)-单元测试是个技术活
  9. 离散傅里叶(DFT) 与 快速傅里叶(FFT)
  10. 小觅相机录制rosbag数据集