请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,关于leetcode的677问题

老师,我自己试了一下是成功的,但是在leetcode是失败,我想问一下是我的代码有哪里错了吗

import java.util.TreeMap;

public class Test {
    public static void main(String[] args) {
        MapSum sum = new MapSum();
        sum.insert("apple", 5);
        sum.insert("app", 3);
        System.out.println(sum.sum("a"));
    }
}


class MapSum {

    private class Node {
        public boolean isWord;
        public int value;
        public TreeMap<Character, Node> next;

        public Node(boolean isWord, int value) {
            this.isWord = isWord;
            this.value = value;
            next = new TreeMap<>();
        }

        public Node(boolean isWord) {
            this(isWord, 0);
        }

        public Node() {
            this(false, 0);
        }

        public Node set(int value) {
            this.value = value;
            return this;
        }
    }

    private Node root;

    /** Initialize your data structure here. */
    public MapSum() {
        root = new Node();
    }

    public void insert(String key, int val) {
        Node cur = root;
        for(int i = 0; i < key.length(); i++) {
            char c = key.charAt(i);
            if(cur.next.get(c) == null)
                cur.next.put(c, new Node(false, val));
            else
                cur.next.put(c, cur.next.get(c).set(cur.next.get(c).value + val));
            cur = cur.next.get(c);
        }
        if(!cur.isWord) {
            cur.isWord = true;
        }
    }

    public int sum(String prefix) {
        Node cur = root;
        for(int i = 0; i < prefix.length(); i++) {
            char c = prefix.charAt(i);
            if(cur.next.get(c) == null)
                return 0;
            cur = cur.next.get(c);
        }
        return cur.value;
    }

}

正在回答

2回答

我尝试提交你的代码,结果是Wrong Answer。Leetcode给出Wrong Answer后,会给出应用你的代码产生错误的测试用例,如下图所示:

//img1.sycdn.imooc.com//szimg/5c1154e600014e8107050190.jpg


这个input的意思就是(上一行是调用,下一行是参数):

MapSum mapSum = new MapSum();
mapSum.insert("aa",3);
System.out.println(mapSum.sum("a")); // 应该输出3,你的结果是对的
mapSum.insert("aa",2);
System.out.println(mapSum.sum("a")); // 应该输出2,你的结果输出了5是错的


根据这个测试用例,再调试一下,看看自己的代码哪里有问题?:)


课程的官方github提供了课程的源码。如果有必要,可以参考。关于这一小节的源码,传送门:https://github.com/liuyubobobo/Play-with-Data-Structures/blob/master/10-Trie/06-Trie-and-Map/src/MapSum.java


加油!:)


===========


我在本地测试你的代码结果是错误的:

https://img1.sycdn.imooc.com//szimg/5c11d8c80001e33821120690.jpg

0 回复 有任何疑惑可以回复我~
  • 老师老师,我自己试了也没有问题耶,答案是对的,但是放在leetcode就不行,这是怎么回事嘞,而且老师呀,你要早点睡觉呀 :>
    回复 有任何疑惑可以回复我~ 2018-12-13 11:49:58
  • 我在本地测试了一下你的代码,是错误的。对于我在回复中给出的测试用例,输出3,5;不是3,2。截图我补充在原答案中了:)
    回复 有任何疑惑可以回复我~ 2018-12-13 11:59:28
  • 老师,麻烦您看一下我上传的截图,就在回答里,麻烦啦:>
    回复 有任何疑惑可以回复我~ 2018-12-13 12:36:45
提问者 天上掉下个小馅饼 2018-12-13 12:36:07

老师,麻烦您看一下我这个截图

https://img1.sycdn.imooc.com//szimg/5c11e1ae00012dfb19311031.jpg

https://img1.sycdn.imooc.com//szimg/5c11e1ae0001470018941028.jpg


0 回复 有任何疑惑可以回复我~
  • 3, 5是错的。正确答案是3,2。
    回复 有任何疑惑可以回复我~ 2018-12-13 12:42:52
  • Output是你的程序的输出;Expected是期望的(正确的)输出。你的输出和期望的输出不一致。
    回复 有任何疑惑可以回复我~ 2018-12-13 12:43:40
  • 老师,我知道自己哪里错了,我并没有实现相同字符串的话就替换键值的操作,非常感谢老师,老师回复真的快!!!:>
    回复 有任何疑惑可以回复我~ 2018-12-13 13:16:51
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信