【问题标题】:Needs Logic explanation java reverse string [duplicate]需要逻辑解释java反向字符串[重复]
【发布时间】:2015-06-19 03:48:47
【问题描述】:

不使用字符串函数的反向字符串问题 我没有得到内部 for 循环,为什么 s.length()-1 ?为什么-1? 它与多维数组有关吗?

char ch[]=new char[s.length()];
for(i=0;i < s.length();i++)
    ch[i]=s.charAt(i);
for(i=s.length()-1;i>=0;i--)
    System.out.print(ch[i]);

找到了这段代码,但是

【问题讨论】:

  • 数组从索引0开始并在索引length - 1结束。这就是为什么-1...我认为大多数编程语言都一样...
  • 它是负一,因为数组的索引从 0 开始。因此,为了遍历字符串的长度,您必须将长度减一以适应第 0 个索引。
  • 我觉得sir 对 SOF 来说有点太正式了 :)

标签: java arrays string multidimensional-array reverse


【解决方案1】:

Java 字符串字符的索引从 0 到字符串的长度 - 1(就像 Java 数组的索引从 0 开始一样,字符串的索引也是如此)。

因此,为了以相反的顺序打印字符串,第二个循环从 s.length()-1 迭代到 0。在此之前,第一个循环从 0 迭代到 s.length()-1,以便将 String 的字符复制到字符数组中。

这与多维数组无关。

【讨论】:

    【解决方案2】:

    我知道您要求对迭代解决方案进行解释。但是,我会给你递归的解释。

    public static String reverse(String str) 
    {
        if ((str == null) || (str.length() <= 1)) 
            return str;
    
        return reverse(str.substring(1)) + str.charAt(0);
    }
    

    基本上,在调用函数之前,您每次都会检查 str 。这称为基本情况,用于在作业完成时停止并且不会出现堆栈溢出。 然后,之后,函数只返回原始函数的一部分。最后,您将把 str 完全反转为迭代解决方案。

    尝试使用System.out.println(reverse("hello"));的函数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 2015-11-06
      • 1970-01-01
      • 2021-05-23
      • 2017-12-03
      • 1970-01-01
      相关资源
      最近更新 更多