[英]Implement String.length method by hand
我必须“手动”实现String
class 中的 .length 方法,我不知道,希望你能以某种方式提供帮助。 除了:
static void manual_length2(String length) {
//example String length = "Hello" = 5 letters.
int counter = 0;
int i = 0;
char g = ' ';
while(i <= 4 ) { /*4 is the number i already know */
g = length.charAt(i);
counter += 1;
length.substring(1);
++i;
}
System.out.println(计数器);
控制台:5
这是我的方法,但我被困在 while 语句的终止条件中。 通过示例“Hello”,我已经知道这个词有 5 个字母,但它需要适合所有输入。 所以我不知道如何表达 while 语句的边界值。
另一种方法是递归,但我问自己如何表达递归的限制。 我该如何表达:
.... lengthMethod1(String length, int ???) {
if(n == 0) {
return length.charAt(0);
}
else {
return ???? lengthMethod1(length, n - 1);
}
您可以循环直到String
为空,同时在每次迭代中删除第一个字符。
static int manual_length(String str) {
int len = 0;
while(!str.isEmpty()){
++len;
str = str.substring(1);
}
return len;
}
这也可以转换为尾递归方法。
static int manual_length(String str) {
return str.isEmpty() ? 0 : 1 + manual_length(str.substring(1));
}
另一种方法是递归,但我问自己如何表达递归的限制。 我该如何表达:
是的,你可以像这样递归地做:
static int manual_length(String str, int len) {
return str.isEmpty() ? len : manual_length(str.substring(1), len + 1);
}
您使用一个累加器变量(即len )来增加,同时从字符串中删除一个字符(即str.substring(1)
)。 当您到达终点(即str.isEmpty()
)时,您将返回累加器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.