博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] 291. Word Pattern II
阅读量:6445 次
发布时间:2019-06-23

本文共 1806 字,大约阅读时间需要 6 分钟。

Problem

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.

Example 1:

Input: pattern = "abab", str = "redblueredblue"

Output: true
Example 2:

Input: pattern = pattern = "aaaa", str = "asdasdasdasd"

Output: true
Example 3:

Input: pattern = "aabb", str = "xyzabcxzyabc"

Output: false
Notes:
You may assume both pattern and str contains only lowercase letters.

Solution

class Solution {    public boolean wordPatternMatch(String pattern, String str) {        if (pattern == null || str == null || str.length() < pattern.length()) return false;        Map
map = new HashMap<>(); return helper(pattern, 0, str, 0, map); } private boolean helper(String pattern, int i, String str, int j, Map
map) { if (i == pattern.length() && j == str.length()) return true; if (i == pattern.length() || j == str.length()) return false; char ch = pattern.charAt(i); if (map.containsKey(ch)) { String s = map.get(ch); if (!str.substring(j).startsWith(s)) return false; else return helper(pattern, i+1, str, j+s.length(), map); } else { //try put some str substrings into the map for (int k = j; k < str.length(); k++) { String part = str.substring(j, k+1); if (map.containsValue(part)) continue; //already used by a different key //add the new pair, dfs, remove the new pair (backtracking) map.put(ch, part); if (helper(pattern, i+1, str, k+1, map)) return true; map.remove(ch); } } return false; }}

转载地址:http://mkvwo.baihongyu.com/

你可能感兴趣的文章
离开Autodesk,开启新篇章
查看>>
iOS 私有库的使用
查看>>
黄聪:MYSQL5.6缓存性能优化my.ini文件配置方案
查看>>
Oracle_字符集问题(数据库与客户端字符集关联关系)
查看>>
Android解析中国天气网的Json数据
查看>>
ubuntu 64位android项目报错的解决方案,打开64位 Ubuntu 的32位支持功能
查看>>
王立平--android事件监听的3种方式
查看>>
[android] 安卓消息推送的几种实现方式
查看>>
UITableViewStyleGrouped顶部留白问题
查看>>
C#开发微信门户及应用(31)--微信语义理解接口的实现和处理
查看>>
PhpStorm11.0 配置在浏览器中打开文件
查看>>
如何在程序中使用CString
查看>>
[svc][op]LVS+keepalived
查看>>
初步掌握Yarn的架构及原理(转)
查看>>
15款值得开发者一试的最新的前端框架
查看>>
ASP.NET应用程序与页面生命周期
查看>>
http调试工具,linux调试工具
查看>>
一次性下载CVPR2016的所有文章
查看>>
Introduction to Monte Carlo Tree Search (蒙特卡罗搜索树简介)
查看>>
PHP受保护的类和私有类什么区别
查看>>