2012-04-06 73 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