Word Pattern

原创 2015年11月17日 19:52:38

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.

解题思路:
首先想到就是用哈希表来做,建立模式字符串中每个字符和单词字符串每个单词之间的映射,而且这种映射必须是一对一关系的,不能’a‘和’b’同时对应‘dog’,所以我们在碰到一个新字符时,首先检查其是否在哈希表中出现,若出现,其映射的单词若不是此时对应的单词,则返回false。如果没有在哈希表中出现,我们还要遍历一遍哈希表,看新遇到的单词是否已经是哈希表中的映射,如果没有,再跟新遇到的字符建立映射。
注意:这里使用到istringstream来提取字符串“dog cat cat dog”中的单词,包含在头文件中。使用例子如下:

 string str = "qq cc ddd";
 istringstream stream(str);
 int a;
 while (stream >> a){
        cout << a << endl;
 }

The output will be
qq
cc
ddd
And then the loop will terminate automatically.

代码如下:

bool wordPattern(string pattern, string str) {
map<char, string> mp;
istringstream istr(str);
string tmp;
int i = 0;
while (istr >> tmp){
    if (i == pattern.size()){
        return false;
    }
    if (mp.find(pattern[i]) == mp.end()){
        for (auto j : mp){
            if (j.second == tmp){
                return false;
            }
        }
        mp[pattern[i]] = tmp;
    }
    else if (mp[pattern[i]] != tmp){
        return false;
    }
    i++;
}
if (i < pattern.size()) return false;
return true;
}

Word Pattern解题报告

https://leetcode.com/problems/word-pattern/ 题目描述见链接 这道题开始我觉得很简单,把string分割之后,然后把分割之后的字符串和位置进行map。但是...
  • lion19930924
  • lion19930924
  • 2016年09月18日 21:37
  • 78

290. Word Pattern ——字符串的使用

290. Word Pattern –字符串的使用
  • jiangyanting2011
  • jiangyanting2011
  • 2016年01月25日 14:36
  • 118

关于LeetCode中Word Pattern一题的理解

题目如下: Given a pattern and a string str, find if str follows the same pattern. Here follow means a f...
  • zsy112371
  • zsy112371
  • 2016年09月08日 20:43
  • 138

Pattern用法(正则表达式)

1. 正则表达式的应用        在给用户发送消息时通常情况会有相同的消息模板,但其中部分信息跟用户相关,因此需要对消息模板中的变量部分进行替换。而对于一个系统而言可能有很多套完全不同的模板。因...
  • woniu317
  • woniu317
  • 2016年08月11日 21:21
  • 9727

Pattern(概述)

1 简介  Pattern的下载地址为:http://www.clips.ua.ac.be/pattern   Pattern是Python编程语言的一个Web挖掘模块。它具有数据挖掘工具(谷歌,...
  • qq280929090
  • qq280929090
  • 2017年04月27日 10:13
  • 568

Java学习笔记之Pattern类的用法详解(正则表达式)

java.util.regex.Pattern (摘自sun主页) Implements:Serializable   正则表达式的编译表示形式。 指定为字符串的正则表达式必须首...
  • WuGee2015
  • WuGee2015
  • 2015年09月05日 18:38
  • 1333

在ATE测试时的pattern x mode是如何来使pattern体积变小的

原因:因为ATE上的每个pin的vector memory都是固定的,当测试的使用使用的pattern太大的话,pattern是不能成功加载到ATE中去的,当然可以不同pin的vector memor...
  • lantianjialiang
  • lantianjialiang
  • 2017年04月19日 09:24
  • 361

HTML input pattern使用体验+js正则表达测试使用体验

Country code: Note: The pattern attribute of the input tag is not supported in Internet Explor...
  • robert_lizhiqiang
  • robert_lizhiqiang
  • 2014年10月10日 16:19
  • 2612

Esper学习之十四:Pattern(一)

前述的几篇关于EPL语法的文章,如果各位都掌握得很好,那基本上应付不少业务场景应该说是轻轻松松。但是总有那么些复杂场景只靠那点基础语法还是搞不定,比如说:某个用户在请求登录服务时,n秒内连续m次未登录...
  • luonanqin
  • luonanqin
  • 2014年08月27日 17:00
  • 5470

《javascript pattern》要点概括

高质量javascript基本要点可维护的代码意味着代码是: 可读的 一致的 可预测的 看起来像是同一个人写的 有文档的 减少全局变量var声明中通过链式赋值的方法会创建全局变量,如下,b是全局变量,...
  • thebigbuding
  • thebigbuding
  • 2016年10月25日 17:52
  • 316
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Word Pattern
举报原因:
原因补充:

(最多只允许输入30个字)