【问题标题】:Why two if statements that are logically similar showing different outputs,below are two if statements which got me confused为什么两个逻辑上相似的 if 语句显示不同的输出,下面是两个让我感到困惑的 if 语句
【发布时间】:2023-01-02 12:10:47
【问题描述】:

这里的 pattern 是一个字符串,arr 是一个字符串数组,这里的 map 是一个 hashmap i,e HashMap<Character,String> map=new HashMap<>();

if(!map.get(pattern.charAt(i)).equals(arr[i])){
                    return false;
                }

以上一个正在工作。 但是下一个有什么问题......?......

if(map.get(pattern.charAt(i))!=(arr[i])){
                    return false;
                }

这是我对第 1 号问题的解决方案的一部分。 290 leetcode... 当我使用第一个 if 语句时,整个代码都在工作......但是对于 if 语句的第二个版本,并不是所有的测试用例都通过了。为什么这样?

class Solution {
    public boolean wordPattern(String pattern, String s) {
        String[] arr=s.split(" ");
        if(arr.length!=pattern.length()){
            return false;
        }
        HashMap<Character,String> map=new HashMap<>();
        for(int i=0;i<arr.length;i++){
              if(map.containsKey(pattern.charAt(i))){
             //**this line is my doubt**//    if(!map.get(pattern.charAt(i)).equals(arr[i])){
                    return false;
                }
else{
                if(map.containsValue(arr[i])){
                    return false;
                }
                map.put(pattern.charAt(i),arr[i]);
            }
        }
        return true;
    }
}

【问题讨论】:

  • 我不使用 Java,所以我想知道 map.get(pattern.charAt(i)) 返回什么?我猜 .equals() 是有原因的。
  • 这回答了你的问题了吗? String.equals versus ==

标签: java data-structures hashmap


【解决方案1】:

在 java 中,equals 方法用于检查两个 String 是否逐个字符相等,但使用 ==!= 意味着它检查两个变量是否指向相同的内存位置。

希望这可以帮助。另外,这是这个问题的副本,请在此处查看。

String.equals versus ==

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-12
    • 2019-11-26
    相关资源
    最近更新 更多