来自仅包含数字的字符串的JAVA最大值

时间:2018-11-25 15:09:57

标签: java

我在geeksforgeeks门户网站的练习中遇到一些问题。我不知道他们为什么对我说错答案。我已经完成了该功能,并且在可见测试用例上的结果也不错。也许我不明白他们要我解决什么问题?你能帮我吗?

问题是这个enter image description here

我的代码是这样的:

//Your Code here
   long answer = 0;

   for (int i = 0; i < str.length(); i++)
   {
       long multiply = (str.charAt(i) - 48) * answer;
       long sum = (str.charAt(i) - 48) + answer;

       if (multiply > sum)
           answer = multiply;
       else if (sum > multiply)
       answer = sum;
   }
   System.out.println(answer);

您将看到...我的解决方案适用于可见的测试用例: enter image description here

重要!!!他们没有显示代码失败的输入测试用例。他们没有显示测试用例的任何输入。

编辑: 显示一些自定义输入的请求(也稍微改变了if else语句...现在包括等于和与乘法的可能性

enter image description here

1 个答案:

答案 0 :(得分:0)

由于以下if-else语句,您的代码包含一个小错误:

if (multiply > sum)
    answer = multiply;
else if (sum > multiply)
    answer = sum;

和等于乘时,您忘记了条件。在这种情况下,您的答案变量将在该迭代中保持不变,最终您将得到错误的答案。

现在,对于“ 22”的测试用例,可能会出现总和==乘积->您的代码给出的答案为2,而答案应该为4。

这可能是代码失败的测试用例之一。