leetcode_Word Pattern
2015-11-26 14:01
260 查看
描述:
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.
思路:
这一题和其中做过的一题很类似Isomorphic Strings,也是两个字符串str1,str2,这两个字符串中的字符是一一对应的,如str1中的字符'a'对应str2
中的字符’x',则str2中的'a'也对应于str1中的'x',这种对应关系是一一对应的,维护两个map对即可,或者两个长度为26的数组
来保存字符之间的对应关系,那么在本题中就要用到hashmap的对应关系了。
代码:
public boolean wordPattern(String pattern, String str) {
if(str==null)
return false;
int patternLen=pattern.length();
String strArr[]=str.trim().split("\\s+");
int strCount=strArr.length;
if(strCount!=patternLen)
return false;
Map<Character, String>map1=new HashMap<Character, String>();
Map<String, Character>map2=new HashMap<String, Character>();
char ch;
for(int i=0;i<patternLen;i++)
{
ch=pattern.charAt(i);
if(map1.containsKey(ch))
{
if(!strArr[i].equals(map1.get(ch)))
return false;
}else {
map1.put(ch, strArr[i]);
}
if(map2.containsKey(strArr[i]))
{
if(ch!=map2.get(strArr[i]))
return false;
}else {
map2.put(strArr[i], ch);
}
}
return true;
}
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.
思路:
这一题和其中做过的一题很类似Isomorphic Strings,也是两个字符串str1,str2,这两个字符串中的字符是一一对应的,如str1中的字符'a'对应str2
中的字符’x',则str2中的'a'也对应于str1中的'x',这种对应关系是一一对应的,维护两个map对即可,或者两个长度为26的数组
来保存字符之间的对应关系,那么在本题中就要用到hashmap的对应关系了。
代码:
public boolean wordPattern(String pattern, String str) {
if(str==null)
return false;
int patternLen=pattern.length();
String strArr[]=str.trim().split("\\s+");
int strCount=strArr.length;
if(strCount!=patternLen)
return false;
Map<Character, String>map1=new HashMap<Character, String>();
Map<String, Character>map2=new HashMap<String, Character>();
char ch;
for(int i=0;i<patternLen;i++)
{
ch=pattern.charAt(i);
if(map1.containsKey(ch))
{
if(!strArr[i].equals(map1.get(ch)))
return false;
}else {
map1.put(ch, strArr[i]);
}
if(map2.containsKey(strArr[i]))
{
if(ch!=map2.get(strArr[i]))
return false;
}else {
map2.put(strArr[i], ch);
}
}
return true;
}
相关文章推荐
- 如何规划构建一套大型的Citrix桌面虚拟化架构 - Part4
- 软件性能测试基本概念释疑
- iostat详细使用
- Mac版Adobe Acrobat Reader修改pdf背景颜色
- Storm:最火的流式处理框架
- 【Oracle错误】:ORA-01034&ORA-27101
- 【转】 Linux中的工作队列
- Android应用开发SharedPreferences存储数据的使用方法
- 【转】spin_lock & mutex_lock的区别? .
- RPM包制作最简单样例
- linux小白
- JS生成UUID的方法实例
- Java中读取某个目录下的所有文件和文件夹
- C++11 智能指针 unique_ptr shared_ptr weak_ptr
- selenium 2 + python 窗口定位
- word多级列表
- java 内存溢出
- java 内存溢出
- ANDROID开发之SQLite详解
- android5.1状态栏添加一键截屏