gpt4 book ai didi

java - 手动实现 String.length 方法

转载 作者:行者123 更新时间:2023-12-01 23:39:04 26 4
gpt4 key购买 nike

我必须“手动”从 String 类实现 .length 方法,我不知道,希望您能以某种方式提供帮助。不允许使用其他方法或函数,除了:

  1. String.charAt()
  2. String.substring()
  3. String.isEmpty()
  4. 位运算 &,|, &&,||, <<, >>,>>>, !=, ==
  5. 算术运算
  6. for 和 while 循环
  7. 递归
  8. if else语句
  9. 自创方法(int、String、char、boolean等)
  10. 自创数组。 (没有他们的方法)
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 语句的终止条件。以“你好”为例,我已经知道这个词有 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));
}

关于java - 手动实现 String.length 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65158854/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com