0314携程笔试第3题 数字压缩

大家帮忙看下为什么不通过,自己编的测试样例都正确的

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        StringBuilder res = new StringBuilder();
        List<Long> number = new ArrayList<>();
        List<Long> count = new ArrayList<>();
        String input = scanner.nextLine();
        input = input.substring(1, input.length()-1);
        String[] groups = input.split(",");
        for (String i : groups){
            //String[] data = i.split("\\(");
            Long data1 = Long.parseLong(i.substring(0, i.indexOf("(")));
            Long data2 = Long.parseLong(i.substring(i.indexOf("(")+1, i.indexOf(")")));
            if (number.isEmpty()){
                number.add(data1);
                count.add(data2);
            }
            else{
                if (data1.equals(number.get(number.size()-1))){
                    count.set(count.size()-1, count.get(count.size()-1) + data2);
                }
                else{
                    number.add(data1);
                    count.add(data2);
                }
            }
        }
        StringJoiner sj = new StringJoiner(",", "[", "]");

        System.out.println(number);
        System.out.println(count);
        for (int i = 0 ; i < number.size() ; i++){
            Long n = number.get(i);
            Long c = count.get(i);
            String k = String.valueOf(n) + "(" + String.valueOf(c) + ")";
            sj.add(k);
        }
        System.out.println(sj.toString());
    }
}

全部评论
请问这个都要自己打出来吗?会像IDEA一样有提示吗
点赞 回复
分享
发布于 03-14 16:15 香港
我看你 number 用 long 来存储,这个是不对的。应该用 String,因为题目说只有括号里面的才在 10 的 9 次方范围内,没说外面的
点赞 回复
分享
发布于 03-15 20:30 上海
联易融
校招火热招聘中
官网直投

相关推荐

1 1 评论
分享
牛客网
牛客企业服务