2012-04-06 38 views
-3

我有一个字符串让我们说“saral”。我想扭转这个字符串。 它如何通过字符串类本身来完成?通过字符串类本身反转字符串

不通过字符串缓冲区或字符串生成器,但只能通过字符串类。

+8

只是出于好奇 - 为什么? – 2012-04-06 16:31:07

+2

(请不要随便在你的文章中随意标点) – Mat 2012-04-06 16:32:23

+1

Loks对我来说就像一个典型的愚蠢的学术问题,这是家庭作业吗? – 2012-04-06 16:42:34

回答

3

您可以使用一个递归函数,是这样的:

public static String reverse(String in) { 
    int pos = in.length() - 1; 
    return pos == -1 ? "" : in.substring(pos) + reverse(in.substring(0, pos)); 
} 
+0

嗨,非常感谢,请你用简单的替换三元运算符,如果其他的,然后再次可以写下这段代码,这将不言而喻,这是一个很好的帮助。 – dghtr 2012-04-06 16:57:30

+7

@SARAL你可以用一个简单的if-else替换三元运算符吗?既然你知道这个名字“三元操作符”,我希望你能! – 2012-04-06 17:03:44

1

有没有简单有效的方式做到这一点,因为Java中的字符串是不可变的,他们不提供reverse()方法。但是你可以通过遍历以相反的顺序目标字符串和前面加上字符一个新的字符串建立一个颠倒字符串:

public static String reverse(String source) { 
    String target = ""; 
    for (int i=0; i<source.length(); i++) { 
    target = source.charAt(i) + target; 
    } 
    return target; 
} 

注意,这是非常低效的,因为字符串连接(通过+运营商)实际上创建了一个StringBuffer在引擎盖下,所以你正在分配一堆临时对象。

+0

我认为这些天它实际上是一个'StringBuilder',并不是它差别很大...... – DNA 2012-04-06 19:41:53