[LeetCode]--290. Word Pattern
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 word in str.
Examples:
pattern = “abba”, str = “dog cat cat dog” should return true.
pattern = “abba”, str = “dog cat cat fish” should return false.
pattern = “aaaa”, str = “dog cat cat dog” should return false.
pattern = “abba”, str = “dog dog dog dog” should return false.
Notes:
You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.
Credits:
Special thanks to @minglotus6 for adding this problem and creating all test cases.
我开始以为模式都是aabb这种,就是都是a开始这种。不会出现eebb这样的,后来基于这种错误的改造,得到以下方法。
public boolean wordPattern(String pattern, String str) {String[] strs = str.split(" ");if (pattern.length() != strs.length)return false;Map<String, Character> map = new HashMap<String, Character>();String temp = "";char c = 'a';for (int i = 0; i < strs.length; i++) {if (!map.containsKey(strs[i]))map.put(strs[i], c++);temp = temp + map.get(strs[i]);}return temp.equals(transformPattern(pattern));}public String transformPattern(String s) {char c = 'a';String temp = "";char[] chs = s.toCharArray();Map<Character, Character> map = new HashMap<Character, Character>();for (int i = 0; i < s.length(); i++) {if (!map.containsKey(chs[i]))map.put(chs[i], c++);temp = temp + map.get(chs[i]);}return temp;}
如果再弄个set的话,一次遍历就能完成。
public boolean wordPattern(String pattern, String str) {String[] strs = str.split(" ");if (pattern.length() != strs.length)return false;Map<Character, String> map = new HashMap<Character, String>();Set<String> unique = new HashSet<String>();for (int i = 0; i < pattern.length(); i++) {char c = pattern.charAt(i);if (map.containsKey(c)) {if (!map.get(c).equals(strs[i]))return false;} else {if (unique.contains(strs[i]))return false;map.put(c, strs[i]);unique.add(strs[i]);}}return true;}
[LeetCode]--290. Word Pattern相关推荐
- leetcode 290 Word Pattern
题目链接:https://leetcode.com/problems/word-pattern/ 思路分析:题目要求判断在pattern中的字符与str中的非空word之间是否存在双射,解法如代码所示 ...
- LeetCode刷题记录11——290. Word Pattern(easy)
LeetCode刷题记录11--290. Word Pattern(easy) 目录 LeetCode刷题记录11--290. Word Pattern(easy) 题目 语言 思路 源码 后记 题目 ...
- 290. Word Pattern
/** 290. Word Pattern* 2016-7-2 by Mingyang* 这里加上了没有containsValue,因为这里如果abba 和 dog dog dog dog通不过,* ...
- 290. Word Pattern
题目: Given a pattern and a string str, find if str follows the same pattern. Here follow means a full ...
- LeetCode : Word Pattern
Given a pattern and a string str, find if str follows the same pattern. Here follow means a full mat ...
- LeetCode 290. Word Patter
解题思路:先将字符串使用string流的形式分成一个个字符串,之后,将pattern和str 分别存到一个map容器中,并比较出现的次数是否相等. class Solution { public:bo ...
- 《每日一题》290. Word Pattern
给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律. 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向 ...
- LeetCode 290. 单词规律(哈希)
1. 题目 给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律. 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之 ...
- leetcode 140. Word Break II | 140. 单词拆分 II(动态规划)
题目 https://leetcode.com/problems/word-break-ii/ 题解 由 leetcode 139. Word Break | 139. 单词拆分(动态规划) 改造而来 ...
最新文章
- 如何在Git中克隆所有远程分支?
- XMPP键盘订制实现图文混排
- boost::format模块测试格式与枚举一起使用
- Maven-Dependency Mechanism
- javascript瀑布流效果
- linux c 服务程序,Linux C 后台服务程序单进程控制
- Java——异常处理(键盘录入一个整数,输出其对于二进制)
- java 多线程跑数据_java——多线程的实现方式、三种办法解决线程赛跑、多线程数据同步(synchronized)、死锁...
- linux 存储映射lun 给_linux 存储多路径聚合和映射
- 5.5.35 - mysql 同步_MySQL 5.6.35主从同步配置案例
- poj 3616 Milking Time
- UIBlock 按钮图片设置
- matlab 点太多,matlab输出参数太多
- 三维点云:学习+了解
- scam计算机术语是什么意思,外贸术语dropshipping 是什么意思?如何操作?
- FLV视频合并-JAVA代码
- 虚拟机服务器异常怎么解决,windows server 2016 虚拟机异常关闭
- 宫崎骏电影-Music
- 基于透视灭点的三维物体点坐标的求取
- Dubbo3.0系列(2)- Dubbo3.0核心概念与架构