当前位置: 首页 > 知识库问答 >
问题:

实现字符串。手工长度法

尹昂雄
2023-03-14

我必须实施这个计划。从Stringclass“手工”获取的长度方法,我不知道,希望您能提供帮助。除以下方法或功能外,不允许使用其他方法或功能:

  1. 绳子。charAt()
  2. 绳子。子字符串()
  3. 绳子。isEmpty()
  4. 位操作
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;

        }

系统出来println(计数器);

控制台: 5

这是我的方法,但我陷入了while语句的终止状态。以“Hello”为例,我已经知道这个单词有5个字母,但它需要适合所有输入。所以我不知道如何表达while语句的边界值。

另一种方法是递归,但我也问自己如何表达递归的极限。我如何表达:

.... lengthMethod1(String length, int ???) {

  if(n == 0) {
     return length.charAt(0);
  }
  else {
     
     return ???? lengthMethod1(length, n - 1);

}

共有2个答案

康泽宇
2023-03-14

另一种方法是递归,但我也问自己如何表达递归的极限。我如何表达:

是的,你可以这样递归

static int manual_length(String str, int len) {
        return str.isEmpty() ? len : manual_length(str.substring(1), len + 1);
    }

您使用一个累加器变量(即len),当您从字符串中删除一个char(即,str.substring(1))时,该变量会递增。当您到达结尾(即,str.is空())时,您返回累加器。

柯瀚玥
2023-03-14

在每次迭代中删除第一个字符时,可以循环直到字符串为空。

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));
}
 类似资料:
  • 要求出字符串的长度(字符的个数),我们可以使用length函数。调用这个函数的语法和我们前面看到的有点不同: int length; length = fruit.length(); 对于这种函数调用,我们称之为在字符串变量fruit上**调用(invoke)**length函数。“调用(invoke)”这个词可能看起来有点奇怪,但是后面我们还会遇到很多在对象上调用函数的例子。 函数调用的语法称

  • 问题内容: 我正在寻找一种方法来限制php中的字符串,并在字符串过长时在末尾添加…。 问题答案: 您可以使用类似于以下内容的东西:

  • 问题内容: 我正在努力获取unicode字符串的计数,并尝试了各种选择。看起来像是一个小问题,但却大有作为。 在这里,我试图获取字符串str1的长度。我得到的是6。但实际上是3。将光标移到字符串“குமார்”上还会显示为3个字符。 基本上我想测量长度并打印每个字符。如“கு”,“மா”,“ர்”。 PS:这是泰米尔语。 问题答案: 找到了解决您问题的方法。 基于这个SO答案,我制作了一个使用正则

  • 我正在努力获取unicode字符串的计数,并尝试了各种选项。看起来是个小问题,但影响很大。 这里我试图得到字符串str1的长度。我得到的是6分。但实际上是3。将光标移到字符串上“குமார்“也显示为3个字符。 基本上我想测量长度并打印每个字符。像 "கு", "மா", "ர்" . 附言:这是泰米尔语。

  • 问题内容: 如果长度超过10个字符,我想修剪字符串。 假设字符串长度为12(),则新的修剪后的字符串将包含。 我该如何实现? 问题答案: s = s.substring(0, Math.min(s.length(), 10)); 这样使用字符串可以避免在字符串已经短于的情况下出现异常。 笔记: 上面做了真正的修剪。如果您实际上想将截断的最后三个(!)字符替换为点,请使用Apache Commons

  • 问题内容: 有没有办法在不知道字符串长度的情况下,将一个字符长的字符串切成4个字符串,每个字符长? 例如: 问题答案: