2015-07-01 160 views
0

我遇到了關於字符串反轉的問題,其中原始字符串保持不變,只有字符顛倒。字符串反轉複雜

Example - Original String : "I am Sam" 
      Reversed String : "I ma maS" 

實現它的代碼非常簡單。只是想知道在這種情況下可能是複雜的,因爲split和String Builder反向方法。

String words[] = str.split(" "); 
     for (int i = 0; i < words.length; i++) { 
      System.out.print(new StringBuilder(words[i]).reverse() + " "); 
     } 
+0

問題,並請求反饋應該在代碼審查去。作爲兩者的快速回答,這在複雜性上是線性的,我建議將其重寫爲返回String而不是打印的函數。 – MattPutnam

回答

0

關於複雜性:

String.split(String)不支持正則表達式(正則表達式),如果你的模式是隻有一個字符長。

在這種情況下,它使用高效的專用代碼。

請試試這個代碼:

對於複雜的計算機科學應該去
new StringBuilder(yourVariable).reverse().toString(); 
+1

在這種情況下,輸出將是'maS ma I'。在我的情況下,字符串保持不變,只有字符反轉 – Vivek

+0

這大致是真的,但實際條件是「(1)one-char字符串,並且此字符不是RegEx的元字符之一」。 {^?* + \\「,或者(2)雙字符字符串,第一個字符是反斜槓,第二個不是ASCII字母或ASCII字母。」 ([源(http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/java/lang/String.java#String.split%28java.lang.String %2Cint%29)) – eis