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