题目:Word Pattern
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-emptyword 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.
One:运用Map键值对的形式进行检验
public class Solution {
public boolean wordPattern(String pattern, String str) {
String[] sb = str.split("\\ ");
Map<Character,String> map = new HashMap<Character,String>();
if(sb.length!=pattern.length())return false;
for(int i=0;i<sb.length;i++){
if(!map.containsKey(pattern.charAt(i))&&!map.containsValue(sb[i]))
map.put(pattern.charAt(i),sb[i]);
else if(map.containsKey(pattern.charAt(i))&&map.containsValue(sb[i]));
else return false;
}
return true;
}
}
Two:进一步简化,利用map的put方法的返回值。
public class Solution {
public boolean wordPattern(String pattern, String str) {
String[] words = str.split(" ");
if (words.length != pattern.length())
return false;
Map index = new HashMap();
for (Integer i=0; i<words.length; ++i)
if (index.put(pattern.charAt(i), i) != index.put(words[i], i))
return false;
return true;
}
}