需要逻辑解释java反向字符串

时间:2015-06-19 03:48:48

标签: java arrays string multidimensional-array reverse

不使用字符串函数的反向字符串问题 我没有得到内部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]);

找到了这段代码,但

2 个答案:

答案 0 :(得分:2)

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

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

这与多维数组无关。

答案 1 :(得分:0)

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

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"));

功能