谷歌Foobar问题-请传递编码消息(Java)



Google Foobar问题:

请传递编码消息你需要向兔子囚犯传递信息,但为了避免被发现,你同意使用的代码……至少可以说是模糊的。兔子们的食物放在标准发行的监狱盘子上,盘子上印有数字0-9,以便于分类,你需要将盘子组合在一起,在代码中创建数字。数字是代码的一部分的信号是它可以被3整除。你可以很容易地做15和45这样的小数字,但144和414这样的大数字有点棘手。编写一个程序,在给定有限数量的板的情况下,帮助自己快速创建用于代码的大数字。

您有L,一个包含一些数字(0到9(的列表。写一个函数答案(L(,它可以找到由这些数字中的一些或全部组成的最大数,并且可以被3整除。如果无法生成这样的数字,请返回0作为答案。L将包含1到9位数字。同一数字可能在列表中出现多次,但列表中的每个元素只能使用一次。

语言

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

测试用例

--Java案例--
输入:
Solution.Solution({3,1,4,1}(
输出:
4311

输入:
解决方案。解决方案({3,1,4,1,5,9}(
输出:
94311

使用verify[file]测试您的解决方案并查看其效果。完成代码编辑后,使用submit[文件]提交答案。如果您的解决方案通过了测试用例,它将从主文件夹中删除。


这就是问题所在。我已经为此编写了一个Java代码,它返回了一些我无法理解的错误。这是我的代码:

public class Main
{
public static void main(String []args){
Solution.solution({1,2,3,4}); //13th line
}
} //16th line
class Solution {
int solution(int [] l) {
int len=l.length;
int sum=0;
int c,a=0;
for(int i=0;i<len;i++)
{
for(int j=(i+1);j<len;j++)
{
if(l[i]<l[j])
{
c=l[i];
l[i]=l[j];
l[j]=c;
}
}
}
for(int i=0;i<len;i++)
{
sum+=l[i];
}
if (sum%3==0)
{
for(int i=0;i<len;i++)
{
System.out.print(""+l[i]);
}
}
else
{
for(int i=len-1;i>=0;i--){
if((sum-l[i])%3==0){
a=l[i];
break;
}
}
for(int i=0;i<len;i++)
{
if(a==l[i])
continue;
System.out.print(""+l[i]);
}
}

// Your code here
}
}

PS:我添加了main类只是为了在IDE上测试代码。


现在错误:

Main.java:13: error: illegal start of expression
Solution.solution({1,2,3,4});
^
Main.java:13: error: ';' expected
Solution.solution({1,2,3,4});
^
Main.java:13: error: illegal start of expression
Solution.solution({1,2,3,4});
^
Main.java:13: error: ';' expected
Solution.solution({1,2,3,4});
^
Main.java:13: error: illegal start of expression
Solution.solution({1,2,3,4});
^
Main.java:13: error: ';' expected
Solution.solution({1,2,3,4});
^
Main.java:13: error: illegal start of expression
Solution.solution({1,2,3,4});
^
Main.java:13: error: ';' expected
Solution.solution({1,2,3,4});
^
Main.java:13: error: illegal start of type
Solution.solution({1,2,3,4});
^
Main.java:16: error: class, interface, or enum expected
}
^
10 errors

不能在需要传递引用的方法中传递{1,2,3,4}。此外,由于您不是在创建Solution类型的实例,因此需要将Solution方法设置为静态。以下是工作代码。还添加了一个返回,因为您需要一个整数。

public class Main
{
public static void main(String []args){
int arr[] = {3, 1, 4, 1};
Solution.solution(arr); //13th line
}
} //16th line
class Solution {
static int  solution(int [] l) {
int len=l.length;
int sum=0;
int c,a=0;
for(int i=0;i<len;i++)
{
for(int j=(i+1);j<len;j++)
{
if(l[i]<l[j])
{
c=l[i];
l[i]=l[j];
l[j]=c;
}
}
}
for(int i=0;i<len;i++)
{
sum+=l[i];
}
if (sum%3==0)
{
for(int i=0;i<len;i++)
{
System.out.print(""+l[i]);
}
}
else
{
for(int i=len-1;i>=0;i--){
if((sum-l[i])%3==0){
a=l[i];
break;
}
}
for(int i=0;i<len;i++)
{
if(a==l[i])
continue;
System.out.print(""+l[i]);
}
}
return 0;
// Your code here
}
}

附言:-我刚刚修复了你的代码以供执行。未验证解决方案。

最新更新