技术:java+hashMap
这道题说的是对应关系,那首先想到的集合就是Map
是要将key(a)-value(dog)存在一起,每当遇到一个字母就去查看对应的单词。
map< 字母 , 单词>
成功:
1.key存在,查看key对应的value和当前的单词是否对应。
2.key不存在,在value中查找单词,没查到的情况下,存下对应关系。
失败:
1.key存在,经过查找字母对应的单词和这个单词不匹配。
2.key不存在,但是这个单词已经被存了。
考察能力:对集合的使用
代码+注解:
import java.util.*;
import java.lang.*;
class Solution {
public boolean wordPattern(String pattern, String str) {
if(pattern == null || str==null) return false;
String[] string = str.split(" ");
//检验长度是否匹配
if(pattern.length() != string.length) return false;
HashMap<Character,String> map = new HashMap<>();
for(int i=0; i<pattern.length(); i++){
char tmp = pattern.charAt(i);
//单词对应的字母已经在
if(map.containsKey(tmp)){
//如果找到对应的单词和当前的单词不对应,则失败
if(!map.get(tmp).equals(string[i])) return false;
}
//key不存在
else{
//一个单词已经对应key值了
if (map.containsValue(string[i])) return false;
else
//添加k-v值
map.put(tmp,string[i]);
}
}
return true;
}
}