题目: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;
}
}
本文介绍了一种基于模式匹配的算法,该算法通过比较给定的模式和字符串来判断字符串是否遵循相同的模式。文中提供了两种实现方式,包括使用Map进行键值对的匹配验证,以及一种更为简洁的方法。
712

被折叠的 条评论
为什么被折叠?



