半字符串每秒钟

时间:2016-07-13 20:44:48

标签: java string

我是一名编码初学者。我已经开始练习SPOJ基本问题。This是我试图解决的问题,但代码不正确。

请帮我解决这个问题的错误,因为我无法弄明白:

'

编辑:

I / P:4     您的     进展     是     显

O / P     ÿ     PO     一世     NTC

1 个答案:

答案 0 :(得分:1)

OK!因此经过大量的打击和试验,我知道您的代码有什么问题。由于randomWords[i].length()%2!=0中的条件if,您编写的代码失败。将此条件用于检查输入没有任何问题,但如果您将选择样本测试用例,则在突出显示的蓝色区域内,您会注意到每个字符串后面有一个额外的空格。像这样:

enter image description here

您可以看到除了最后一个输入之外,所有其他输入字符串的末尾都有空格字符。因此,当您从stdin读取字符串时,字符串的长度为2*k + 1(由于空格),您的程序将在没有任何输出的情况下退出。因此你得到了错误的答案。

这个问题也存在于其他测试用例中。我怎么知道这个?在spoj显示错误答案之后,如果您点击错误答案,它将显示2个失败的测试用例,如下所示:

enter image description here 它显示您的程序输出为空,因为您的代码因字符串末尾的额外空格而退出。 所以,我认为编写测试用例的人应该被给予 WT 错误(错误的测试用例):P:D

因此,可能的更正是您从if中移除了上述条件,您将获得AC。因为现在您要将2*k + 1除以2,这将不是一个整数,它将四舍五入到最接近的最小整数,这与将2*k除以{{1}相同并且程序将给出正确的结果。

在解决有关spoj的问题时应该注意的一些事项,您不必验证每个输入是否在问题中指定的范围内,或者它是否是有效的数据类型。该范围告诉您,Spoj将仅测试您的程序,其中的案例介于这些范围之间且不会超过它们。因此,即使您删除了检查输入数据的异常和范围的所有代码,您也将获得AC。而且,编写这样的代码只会增加负担。

希望这会有所帮助。 :)