2015-07-01 114 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