【发布时间】:2011-08-06 14:07:20
【问题描述】:
这是一个家庭作业问题,我遇到了一些麻烦。
编写一个递归方法来确定一个字符串是否是一个十六进制数。 为您的方法编写 javadocs。 如果每个字符都是 0 或 1 或 2 或 3 或 4 或 5 或 6 或 7 或 8 或 9 或 a 或 A 或 b 或 B 或 c 或 C 或 d 或 D 或 e 或 E 或 f 或 f。
目前我所能看到的测试是如果字符串 0 处的字符是他给我的这些值之一,那么它的那部分是十六进制。
有什么提示或建议可以帮助我吗?
这是我目前所拥有的:`
public boolean isHex(String string){
if (string.charAt(0)==//what goes here?){
//call isHex again on s.substring(1)
}else return false;
}
`
【问题讨论】:
-
你在正确的轨道上。查找 String.substring 并考虑如何设置对字符串中所有字符的递归检查。
-
请发布您的代码,我们可以看看它有什么问题。
-
@sverre 我在 uni 也有类似的情况(我们不是吗?),我的助教试图告诉我我的方法很差,因为它使用了
String.substring()解释它是我的方法 @ 987654323@。我和教授一起讨论了这个问题(用 String 类的源代码来证明我的情况。)希望 Joel 的助教不要那么天真! :-) -
@glowcoder:我看不出 TA 会怎么做。 string.substring() 创建一个新字符串,除非结果是原始字符串。因此,由于您的方法将被调用 n 次,并且每个会复制 O(n) 个字符,因此需要 O(n*n)。
-
@Voo 那是他犯的错误。在 Java 中,
substring是 O(1)。它不会复制字符。结果字符串使用相同的底层char[]。它所改变的只是开始和偏移指针(实际上不是指针,只是ints 指定了索引。)
标签: java methods recursion hex