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相关推荐

  1. leetcode 290 Word Pattern

    题目链接:https://leetcode.com/problems/word-pattern/ 思路分析:题目要求判断在pattern中的字符与str中的非空word之间是否存在双射,解法如代码所示 ...

  2. LeetCode刷题记录11——290. Word Pattern(easy)

    LeetCode刷题记录11--290. Word Pattern(easy) 目录 LeetCode刷题记录11--290. Word Pattern(easy) 题目 语言 思路 源码 后记 题目 ...

  3. 290. Word Pattern

    /** 290. Word Pattern* 2016-7-2 by Mingyang* 这里加上了没有containsValue,因为这里如果abba 和 dog dog dog dog通不过,* ...

  4. 290. Word Pattern

    题目: Given a pattern and a string str, find if str follows the same pattern. Here follow means a full ...

  5. LeetCode : Word Pattern

    Given a pattern and a string str, find if str follows the same pattern. Here follow means a full mat ...

  6. LeetCode 290. Word Patter

    解题思路:先将字符串使用string流的形式分成一个个字符串,之后,将pattern和str 分别存到一个map容器中,并比较出现的次数是否相等. class Solution { public:bo ...

  7. 《每日一题》290. Word Pattern

    给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律. 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向 ...

  8. LeetCode 290. 单词规律(哈希)

    1. 题目 给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律. 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之 ...

  9. leetcode 140. Word Break II | 140. 单词拆分 II(动态规划)

    题目 https://leetcode.com/problems/word-break-ii/ 题解 由 leetcode 139. Word Break | 139. 单词拆分(动态规划) 改造而来 ...

最新文章

  1. 如何在Git中克隆所有远程分支?
  2. XMPP键盘订制实现图文混排
  3. boost::format模块测试格式与枚举一起使用
  4. Maven-Dependency Mechanism
  5. javascript瀑布流效果
  6. linux c 服务程序,Linux C 后台服务程序单进程控制
  7. Java——异常处理(键盘录入一个整数,输出其对于二进制)
  8. java 多线程跑数据_java——多线程的实现方式、三种办法解决线程赛跑、多线程数据同步(synchronized)、死锁...
  9. linux 存储映射lun 给_linux 存储多路径聚合和映射
  10. 5.5.35 - mysql 同步_MySQL 5.6.35主从同步配置案例
  11. poj 3616 Milking Time
  12. UIBlock 按钮图片设置
  13. matlab 点太多,matlab输出参数太多
  14. 三维点云:学习+了解
  15. scam计算机术语是什么意思,外贸术语dropshipping 是什么意思?如何操作?
  16. FLV视频合并-JAVA代码
  17. 虚拟机服务器异常怎么解决,windows server 2016 虚拟机异常关闭
  18. 宫崎骏电影-Music
  19. 基于透视灭点的三维物体点坐标的求取
  20. Dubbo3.0系列(2)- Dubbo3.0核心概念与架构

热门文章

  1. iOS架构-制作属于自己的cocoapods以及podspec文件讲解(20)
  2. (0057)iOS开发之Xcode9进行iOS设备无线调试
  3. 前端代码规范-CSS
  4. 补充前几天测试用到的Linux命令
  5. DirectX11 With Windows SDK--22 立方体映射:静态天空盒的读取与实现
  6. 蓝松短视频经验分享----抠图和动画设计
  7. Powerup tinyos接口实现
  8. 字符编码的发展(ASCII、Unicode、utf-8)
  9. java 实现图片上传功能
  10. IKE phase 2