15

不经过 char 序列有没有办法String在 Java中反转

4

12 回答 12

21

试试这个,

String s = "responses";
StringBuilder builder = new StringBuilder(s);
System.out.println(builder.reverse());
于 2012-09-06T17:51:21.867 回答
20

您可以使用以下StringBuilder#reverse()方法

String reverse = new StringBuilder(originalString).reverse().toString();
于 2012-09-06T17:50:52.397 回答
10

用途StringBuilder'sStringBuffer's方法...reverse()

 public class StringReverse
{
  public static void main(String[] args)
  {
  String string=args[0];
  String reverse = new StringBuffer(string).reverse().toString();
  System.out.println("\nString before reverse: "+string);
  System.out.println("String after reverse: "+reverse);
  } 
} 

StringBuffer线程安全的,而StringBuilder不是线程安全的......StringBuilder 是从 Java 1.5 引入的,为了更快地完成那些不需要担心并发的操作......

于 2012-09-06T17:50:52.100 回答
5

尝试 reverse() 方法:

StringBuilder stringName = new StringBuilder();
String reverse = stringName.reverse().toString();
于 2012-09-06T17:53:37.183 回答
3

您可以使用 StringBuilder..

String word = "Hello World!";
StringBuilder sb = new StringBuilder(word);

System.out.print(sb.reverse());
于 2012-09-07T03:43:32.910 回答
3

如果我们必须这样做:

不经过 char 序列

一种简单的迭代方法是:

public String reverse(String post) {                
    String backward = "";
    for(int i = post.length() - 1; i >= 0; i--) {
        backward += post.substring(i, i + 1);
    }        
    return backward;
} 
于 2013-06-21T08:17:53.943 回答
2

您可以使用字符串缓冲区来反转字符串。

public String reverse(String s) {
    return new StringBuffer(s).reverse().toString();
}

一种更有趣的方法是递归。

public String reverse(String s) {
    if (s.length() <= 1) { 
        return s;
    }
    return reverse(s.substring(1, s.length())) + s.charAt(0);
}
于 2012-09-06T18:06:37.280 回答
2

这是一种使用递归的方法 -

public static String reverse(String s1){
        int l = s1.length();
        if (l>1)
                return(s1.substring(l-1) + reverse(s1.substring(0,l-1)));
        else
                return(s1.substring(0));
}
于 2013-08-25T03:45:04.650 回答
2

使用最少的 API 支持。一个简单的算法。

static String reverse(String str) {
    char[] buffer = str.toCharArray();
    for (int i = 0; i < buffer.length/2; ++i){
        char c = buffer[i];
        buffer[i] = buffer[buffer.length-1-i];
        buffer[buffer.length-1-i] = c;
    }
    return new String(buffer);
}
于 2014-06-27T18:36:51.603 回答
1

在这里,我有一个相同的示例,使用 substring 方法和 o(n) 而不使用 string 中的任何网络。我知道使用子字符串将保存完整的字符串内存。

for(int i = 0; i < s.length(); i++)    {
    s = s.substring(1, s.length() - i) + s.charAt(0) + s.substring(s.length() - i);
    System.out.println(s);
}

这可能会帮助你!

于 2014-03-26T16:56:13.843 回答
1
public class RevString {
  public static void main(String[] args) {
    String s="jagan";
    String rev="";
    for (int i=s.length()-1;i>=0;i--) {
      rev=rev+s.charAt(i);
    }
     System.out.println("Reverse String is: "+rev);
  }
}
于 2016-10-28T03:26:10.760 回答
0

我还没有看到任何简单的方法。 这是合适的方法:


使用循环:


    String d = "abcdefghij";
    char b[] = new char[d.length()];// new array;
    int j=0; // for the array indexing
    for(int i=d.length()-1;i>=0;i--){
        b[j] = d.charAt(i); // input the last value of d in first of b i.e. b[0] = d[n-1]
        j++;
    }
    System.out.println("The reverse string is: "+String.valueOf(b));


输出是 The reverse string is: jihgfedcba
简单的逻辑是:

array[i] = array[n-i]; 其中 i 是迭代,n 是数组的总长度

于 2017-12-31T16:25:42.090 回答