题目
题解
单词和pattern中的字母要一一对应,因此需要两个映射,即建立两个哈希表
循环里的逻辑需要注意一下,一开始 if else有点乱,没有ac
class Solution {
public boolean wordPattern(String pattern, String s) {
String[] strings=s.split("\\s+");
int n=strings.length;
if(pattern.length()!=n)
return false;
Map<String,Character>hashMap1=new HashMap<>();
Map<Character,String>hashMap2=new HashMap<>();
for(int i=0;i<n;i++){
String word=strings[i];
char letter=pattern.charAt(i);
//有但不等
if(hashMap1.containsKey(word)&&!hashMap1.get(word).equals(letter))
return false;
if(hashMap2.containsKey(letter)&&!hashMap2.get(letter).equals(word))
return false;
//没有
hashMap1.put(word,letter);
hashMap2.put(letter,word);
}
return true;
}
}
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( n ) O(n) O(n)