簡體   English   中英

手動實現 String.length 方法

[英]Implement String.length method by hand

我必須“手動”實現String class 中的 .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. 自創Arrays。 (沒有他們的方法)
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM