[英]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.