该解决方案有两个问题。
考虑一下测试用例-有2个字符“ 8”和“ 7”,它们都构成您应该返回的整数87。(这是主要问题)
这有点花哨,但是字符“ 0”的整数值不一定小于“ 1”,“ 2”等值。它几乎总是如此,但是我想访问者喜欢看到这种关心。更好的解决方案是
如果(Character.isDigit(c)){…}
有很多不同的方法可以做到这一点。我的第一个想法是:
int i = 0;while (i < string.length() && !Character.isDigit(string.charAt(i))) i++;int j = i;while (j < string.length() && Character.isDigit(string.charAt(j))) j++;return Integer.parseInt(string.substring(i, j)); // might be an off-by-1 here
当然,如评论中所述,在Java中使用正则表达式功能可能是实现此目的的最佳方法。但是,当然,许多面试官会要求您在没有图书馆等情况下做这样的事情。



