好诡异啊,一样的代码一样的示例,为什么我在Idea上运行这段输出的是true,在力扣上运行却是false?

好诡异啊,一样的代码一样的示例,为什么我在Idea上运行这段输出的是true,在力扣上运行却是false?真想不出问题在哪哇

img


题目:https://leetcode.cn/problems/valid-anagram/?envType=list&envId=qBZZFEhR
完整代码:

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

public class test {
    public static void main(String[] args) {
        String s = "a";
        String t = "a";
        System.out.println(new Solution().isAnagram(s, t));
    }
}

class Solution {
    static Map<Character, Integer> hashTable = new HashMap<>();
    static{
        for (char ch = 'a'; ch <= 'z'; ch++) {
            hashTable.put(ch, 0);
        }
    }
    public boolean isAnagram(String s, String t) {
        int n1 = s.length();
        int n2 = t.length();
        if (n1 == n2 && n1 == 0) return true;
        for (char ch : s.toCharArray()) {
            hashTable.put(ch, hashTable.get(ch) + 1);
        }
        for (char ch : t.toCharArray()) {
            hashTable.put(ch, hashTable.get(ch) - 1);
        }
        Collection<Integer> values = hashTable.values();
        for (Integer value : values) {
            if (value != 0) return false;
        }
        return true;
    }
}

通过在力扣网站测试,发现好像是因为静态代码块的原因,把那段代码放到isAnagram()方法里起始位置即可。

测试代码如下:


import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
 

public class Solution {
   
    static Map<Character, Integer> hashTable = new HashMap<>();
    public boolean isAnagram(String s, String t) {
        
        
        for (char ch = 'a'; ch <= 'z'; ch++) {
            hashTable.put(ch, 0);
        }
        
        int n1 = s.length();
        int n2 = t.length();
        if (n1 == n2 && n1 == 0) return true;
        for (char ch : s.toCharArray()) {
            hashTable.put(ch, hashTable.get(ch) + 1);
        }
        for (char ch : t.toCharArray()) {
            hashTable.put(ch, hashTable.get(ch) - 1);
        }
        Collection<Integer> values = hashTable.values();
        for (Integer value : values) {
            if (value != 0) return false;
        }
        return true;
    }
    
    public static void main(String[] args) {
        String s = "a";
        String t = "a";
        Scanner sc = new Scanner(System.in);
        s=sc.next();
        t=sc.next();
        System.out.println(new Solution().isAnagram(s, t));
    }
}
 

img

效果如图, 如有帮助给个采纳谢谢

img


代码如下 :

import java.util.HashMap;
import java.util.Map;

class Solution {
    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length()) {
            return false;
        }

        Map<Character, Integer> counter = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            counter.put(ch, counter.getOrDefault(ch, 0) + 1);
        }

        for (int i = 0; i < t.length(); i++) {
            char ch = t.charAt(i);
            if (!counter.containsKey(ch) || counter.get(ch) == 0) {
                return false;
            }
            counter.put(ch, counter.get(ch) - 1);
        }

        return true;
    }
}


  • 这篇博客: idea关闭所有打开的项目窗口中的 为了完成一个项目,我们可能打开很多项目进行参考,但是关闭以后不能重新全部打开,需要手动一个一个的点开,但是idea有可以全部关闭所有打开的项目,并在下一次打开时再自动打开上次关闭的所有项目 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 左上角file->exit,点击退出即可