力扣上的 290. 单词规律 题目 , 用java写的代码,不知道为什么错误。 求解

原题请移步力扣。
我写的代码如下:

class Solution {
    public boolean wordPattern(String pattern, String s) {
      HashMap<Character,String> map = new HashMap<Character,String>();
         char[] charpat = pattern.toCharArray();
         String[] words = s.split(" ");
         map.put(charpat[0], words[0]);
         for(int i=1;i<charpat.length;i++) {
            if(map.containsKey(charpat[i])) {
                     if(map.get(charpat[i])!=words[i]){
                         return false;
                     }
            }
           else if(map.containsValue(words[i])) {
                  return false;
           }
              else {
                  map.put(charpat[i], words[i]);
              }
     }
         return true;
    }
}

执行结果:
输入
"abba"
"dog cat cat dog"
输出
false
预期结果
true

String比较应该用equals

img