您的位置:首页 > 其它

290. Word Pattern

2016-07-09 22:26 302 查看
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.

双向映射,键和值同时不存在才能插入,否则检查,键映射不等于值、值存在没有对应的键,都不是双向映射。

public static boolean wordPattern(String pattern, String str)
{
int patlen=pattern.length();
int strlen=str.length();
if(patlen==0||strlen==0)
return false;

String[] strs=str.split(" ");
if(patlen!=strs.length)
return false;

HashMap<Character, String> hashmap=new HashMap<>(strs.length);
for(int i=0;i<patlen;i++)
{
char c=pattern.charAt(i);
String s=strs[i];
if(!hashmap.containsKey(c)&&!hashmap.containsValue(s))
hashmap.put(c, s);
else {
if(!hashmap.containsKey(c)||hashmap.get(c).compareTo(s)!=0)
return false;
}
}

return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: