foobar.withgoogle.com 任务请传递编码消息java

wbrvyc0a  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(105)

我正在使用foobar. with google task“Please Pass the Coded Messages”,我在我的电脑上对每个可能的数字进行了正确的计算,但是foobar打印出“Test 5 failed [Hidden]”这个隐藏测试是什么意思?
我的成果:
正在验证解决方案...
测试1通过!
测试2通过!
测试3通过!
测试4通过!
测试5失败[隐藏]

请传递编码消息

你需要给兔子工作人员传递一个信息,但为了避免被发现,你同意使用的代码是......模糊的,至少可以说。兔子们被给予食物的标准发行的盘子上印有数字0-9,以便更容易分类,而且你需要合并几组盘子来创造代码中的数字。一个数字是代码的一部分的信号是它能被3整除。你可以很容易地计算出15和45这样的小数字,但是像144和414这样的大数字就有点棘手了。在给定有限的盘子数量的情况下,编写一个程序来帮助自己快速创建大数字,以便在代码中使用。
你有L,一个包含一些数字的列表(0到9).写一个函数解(L)找出可以由这些数字中的部分或全部组成并且可被3整除的最大数。如果不能组成这样的数,则返回0作为解决方案。L将包含1到9位的任何数字。相同的数字可能在列表中出现多次,但是列表中的每个元素只能使用一次。

语言

要提供Java解决方案,请编辑Solution.java要提供Python解决方案,请编辑solution.py

测试用例

您的代码应该通过以下测试用例。请注意,它也可以针对此处未显示的隐藏测试用例运行。
-- Java cases -- Input:Solution.solution({3,1,4,1})输出:4311
输入:Solution.solution({3,1,4,1,5,9})输出:94311
-- Python cases -- Input:solution.solution([3,1,4,1])输出:4311
输入:solution.solution([3,1,4,1,5,9])输出:94311
使用verify [file]测试解决方案并查看其效果。完成代码编辑后,使用submit [file]提交答案。如果解决方案通过测试用例,则将从主文件夹中删除该解决方案。

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

public class Solution {
   public static int solution(int[] l) {
        List<Integer> initList = new ArrayList<>();
        List<Integer> resList = new ArrayList<>();

        Queue<Integer> rem0queue = new LinkedList<>();
        Queue<Integer> rem1queue = new LinkedList<>();
        Queue<Integer> rem2queue = new LinkedList<>();

        StringBuilder sbResult = new StringBuilder();
        int result = 0, sum = 0, rem;

        for(int x: l){
            if(x < 0) return result;
            initList.add(x);
        }

        Collections.sort(initList);
        //System.out.println(initList);

        for(int y: initList) {
            sum += y;
            if((y % 3) == 0) rem0queue.add(y);
            else if((y % 3) == 1) rem1queue.add(y);
            else rem2queue.add(y);
        }

        if(sum == 0) return result;
        rem = sum % 3;


        switch (rem) {
            case 0:
                resList.addAll(rem0queue);
                resList.addAll(rem1queue);
                resList.addAll(rem2queue);
                resList.sort(Collections.reverseOrder());

                for(int x: resList) sbResult.append(x);
                result = Integer.parseInt(sbResult.toString());
                break;

            case 1:
                if(!rem1queue.isEmpty()) rem1queue.remove();
                else {
                    if(!rem2queue.isEmpty()) rem2queue.remove();
                    if(!rem2queue.isEmpty()) rem2queue.remove();
                }
                resList.addAll(rem1queue);
                resList.addAll(rem2queue);
                resList.addAll(rem0queue);
                resList.sort(Collections.reverseOrder());

                for(int x: resList) sbResult.append(x);
                //if((Integer.parseInt(sbResult.toString())) % 3 != 0) return result;
                result = Integer.parseInt(sbResult.toString());
                break;

            case 2:
                if(!rem2queue.isEmpty()) rem2queue.remove();
                else {
                    if(!rem1queue.isEmpty()) rem1queue.remove();
                    if(!rem1queue.isEmpty()) rem1queue.remove();
                }
                resList.addAll(rem2queue);
                resList.addAll(rem1queue);
                resList.addAll(rem0queue);
                resList.sort(Collections.reverseOrder());

                for(int x: resList) sbResult.append(x);
                //if((Integer.parseInt(sbResult.toString())) % 3 != 0) return result;
                result = Integer.parseInt(sbResult.toString());
                break;
        }

        //System.out.println("Sum of digits " + sum + "\n" + "Rem num " + rem + "\n"+ "Result num " + sbResult);

        return result;
    }
}

相关问题