【LeetCode】290. Word Pattern 解题报告(Python)
作者: 负雪明烛
id: fuxuemingzhu
个人博客: http://fuxuemingzhu.cn/
题目地址:https://leetcode.com/problems/word-pattern/#/description
题目描述
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.
题目大意
看模式和空格分割的字符串模式能不能构成一一映射。
解题方法
这个题第一感觉就是使用HashMap,看到Tags也是HashMap我就放心了。想法基本就是把字符和单词对应起来,看单词和字符能不能对应上,这样就知道模式是否匹配了。做的时候出现了一个小问题,就是pattern = "abba", str = "dog dog dog dog"这种,要判断是不是已经放进了value,之前不知道怎么办,今天学到了HashMap有个containsValue()方法,可以判断是否已经放进了value。
public class Solution {
public boolean wordPattern(String pattern, String str) {
HashMap<Character, String> map = new HashMap<Character, String>();
String[] words = str.split(" ");
if(words.length != pattern.length()){
return false;
}
for(int i = 0; i < words.length; i++){
String word = words[i];
char temp = pattern.charAt(i);
if(map.containsKey(temp)){
if(!map.get(temp).equals(word)){
return false;
}
}else{
if(map.containsValue(word)){
return false;
}
map.put(temp, word);
}
}
return true;
}
}
二刷,使用Python解法,这个题和205. Isomorphic Strings一模一样,所以很快就写出来这个一一映射的代码:
class Solution(object):
def wordPattern(self, pattern, str):
"""
:type pattern: str
:type str: str
:rtype: bool
"""
strs = str.split()
if len(pattern) != len(strs):
return False
d = dict()
for i, p in enumerate(pattern):
if p not in d:
d[p] = strs[i]
else:
if d[p] != strs[i]:
return False
d = dict()
for i, p in enumerate(strs):
if p not in d:
d[p] = pattern[i]
else:
if d[p] != pattern[i]:
return False
return True
日期
2017 年 5 月 19 日
2018 年 11 月 24 日 —— 周六快乐
【LeetCode】290. Word Pattern 解题报告(Python)的更多相关文章
- [LeetCode] 290. 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 Pattern 、lintcode 829. Word Pattern II
290. Word Pattern istringstream 是将字符串变成字符串迭代器一样,将字符串流在依次拿出,比较好的是,它不会将空格作为流,这样就实现了字符串的空格切割. C++引入了ost ...
- [LeetCode] 290. 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 Pattern(单词模式)(istringstream、vector、map)(*)
翻译 给定一个模式,和一个字符串str.返回str是否符合同样的模式. 这里的符合意味着全然的匹配,所以这是一个一对多的映射,在pattern中是一个字母.在str中是一个为空的单词. 比如: pat ...
- Java [Leetcode 290]Word Pattern
题目描述: Given a pattern and a string str, find if str follows the same pattern. Here follow means a fu ...
- LeetCode 290. 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 Pattern
Problem: Given a pattern and a string str, find if str follows the same pattern. Here follow means a ...
- Leetcode 290 Word Pattern STL
Leetcode 205 Isomorphic Strings的进阶版 这次是词组字符串和匹配字符串相比较是否一致 请使用map来完成模式统计 class Solution { public: boo ...
- leetcode 290 Word Pattern(map的应用)
Given a pattern and a string str, find if str follows the same pattern. Here follow means a full mat ...
随机推荐
- datamash 命令行下的快速计算工具
github地址:https://github.com/agordon/datamash
- mysql数据操作语言DML
插入insert 插入方式1 语法: insert into 表名(列名,....) values(值1,....) 说明: 1.插入的值的类型要与列的类型一致或兼容 2.可以为null的值:①列写了 ...
- 带你全面了解 OAuth2.0
最开始接触 OAuth2.0 的时候,经常将它和 SSO单点登录搞混.后来因为工作需要,在项目中实现了一套SSO,通过对SSO的逐渐了解,也把它和OAuth2.0区分开了.所以当时自己也整理了一篇文章 ...
- C逗号表达式
c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值.如:(3+5,6+8)称为逗号表达式,其求解过程先表达 ...
- fastjson转换数字时,格式化小数点
使用fastjson类库转换java对象时,对于BigDecimal类型,有时需要特殊格式,比如: 1.0,转为json时候,要求显式为1,因此需要在转换时做处理.步骤如下: 1.新建类,实现Valu ...
- CentOS6设置Django开发环境
今天在我的Centos6.5机器上安装 Django 开发环境,在安装完使用 "django-admin.py startproject myapp" 创建应用的时候报了下面的错误 ...
- spring jdbc 配置数据源连接数据库
概述 在XML配置数据源,并将数据源注册到JDBC模板 JDBC模板关联业务增删改查 在XML配置数据源 <?xml version="1.0" encoding=" ...
- Oracle存储过程游标for循环怎么写
一.不带参数的游标for循环 首先编写存储过程的整体结构,如下: create or replace procedure test_proc is v_date date; --变量定义 begin ...
- Function overloading and return type
In C++ and Java, functions can not be overloaded if they differ only in the return type. For example ...
- Shell脚本定期清空大于1G的日志文件
一个关于如何在指定文件大于1GB后,自动删除的问题. 批处理代码如下: #!/bin/bash # 当/var/log/syslog大于1GB时 # 自动将其备份,并清空 # 注意这里awk的使用 i ...