洛上言 2023-07-17 08:17 采纳率: 95.4%
浏览 62
已结题

好诡异啊,一样的代码一样的示例,为什么我在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;
    }
}

  • 写回答

3条回答 默认 最新

  • a5156520 2023-07-17 09:59
    关注

    通过在力扣网站测试,发现好像是因为静态代码块的原因,把那段代码放到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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月25日
  • 已采纳回答 7月17日
  • 创建了问题 7月17日

悬赏问题

  • ¥99 求购美团闪购医药ISV服务商资质
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?
  • ¥15 请问GPT语言模型怎么训练?
  • ¥15 已知平面坐标系(非直角坐标系)内三个点的坐标,反求两坐标轴的夹角
  • ¥15 webots有问题,无响应
  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?