Dan*_*man 934
你可以用这个:
new StringBuilder(hi).reverse().toString()
Run Code Online (Sandbox Code Playgroud)
或者,对于早于JDK 1.5的版本,使用java.util.StringBuffer而不是StringBuilder- 它们具有相同的API.感谢评论员指出,StringBuilder如果没有并发问题,现在首选.
Sam*_*awy 105
对于在线法官的问题,不允许StringBuilder或者StringBuffer,你可以做到这一点的地方使用char[]如下:
public static String reverse(String input){
char[] in = input.toCharArray();
int begin=0;
int end=in.length-1;
char temp;
while(end>begin){
temp = in[begin];
in[begin]=in[end];
in[end] = temp;
end--;
begin++;
}
return new String(in);
}
Run Code Online (Sandbox Code Playgroud)
Kev*_*sox 60
public static String reverseIt(String source) {
int i, len = source.length();
StringBuilder dest = new StringBuilder(len);
for (i = (len - 1); i >= 0; i--){
dest.append(source.charAt(i));
}
return dest.toString();
}
Run Code Online (Sandbox Code Playgroud)
http://www.java2s.com/Code/Java/Language-Basics/ReverseStringTest.htm
Luc*_*ore 58
String string="whatever";
String reverse = new StringBuffer(string).reverse().toString();
System.out.println(reverse);
Run Code Online (Sandbox Code Playgroud)
Vik*_*ngh 26
我这样做是通过以下两种方式实现的:
通过CHARACTERS反转字符串:
public static void main(String[] args) {
// Using traditional approach
String result="";
for(int i=string.length()-1; i>=0; i--) {
result = result + string.charAt(i);
}
System.out.println(result);
// Using StringBuffer class
StringBuffer buffer = new StringBuffer(string);
System.out.println(buffer.reverse());
}
Run Code Online (Sandbox Code Playgroud)
由WORDS反向字符串:
public static void reverseStringByWords(String string) {
StringBuilder stringBuilder = new StringBuilder();
String[] words = string.split(" ");
for (int j = words.length-1; j >= 0; j--) {
stringBuilder.append(words[j]).append(' ');
}
System.out.println("Reverse words: " + stringBuilder);
}
Run Code Online (Sandbox Code Playgroud)
And*_*ggs 19
看一下StringBuffer下的Java 6 API
String s = "sample";
String result = new StringBuffer(s).reverse().toString();
Run Code Online (Sandbox Code Playgroud)
C0D*_*OU5 17
以下是使用递归的示例:
public void reverseString() {
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String reverseAlphabet = reverse(alphabet, alphabet.length()-1);
}
String reverse(String stringToReverse, int index){
if(index == 0){
return stringToReverse.charAt(0) + "";
}
char letter = stringToReverse.charAt(index);
return letter + reverse(stringToReverse, index-1);
}
Run Code Online (Sandbox Code Playgroud)
Art*_*gio 12
这是一个低级解决方案:
import java.util.Scanner;
public class class1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String inpStr = in.nextLine();
System.out.println("Original String :" + inpStr);
char temp;
char[] arr = inpStr.toCharArray();
int len = arr.length;
for(int i=0; i<(inpStr.length())/2; i++,len--){
temp = arr[i];
arr[i] = arr[len-1];
arr[len-1] = temp;
}
System.out.println("Reverse String :" + String.valueOf(arr));
}
}
Run Code Online (Sandbox Code Playgroud)
Enr*_*rin 12
我尝试使用Stack,只是为了好玩.这是我的代码:
public String reverseString(String s) {
Stack<Character> stack = new Stack<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
stack.push(s.charAt(i));
}
while (!stack.empty()) {
sb.append(stack.pop());
}
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
小智 12
charAt()方法String name = "gaurav";
String reversedString = "";
for(int i = name.length() - 1; i >= 0; i--){
reversedString += name.charAt(i);
}
System.out.println(reversedString);
Run Code Online (Sandbox Code Playgroud)
toCharArray()方法String name = "gaurav";
char [] stringCharArray = name.toCharArray();
String reversedString = "";
for(int i = stringCharArray.length - 1; i >= 0; i--) {
reversedString += stringCharArray[i];
}
System.out.println(reversedString);
Run Code Online (Sandbox Code Playgroud)
reverse()方法String name = "gaurav";
String reversedString = new StringBuilder(name).reverse().toString();
System.out.println(reversedString);
Run Code Online (Sandbox Code Playgroud)
检查https://coderolls.com/reverse-a-string-in-java/
Pra*_*shi 11
由于未列出以下方法(使用XOR)来反转字符串,因此我附加此方法以反转字符串.
该算法是基于:
1.(XOR B)XOR B = A.
2.(XOR B)XOR A = B.
代码段:
public class ReverseUsingXOR {
public static void main(String[] args) {
String str = "prateek";
reverseUsingXOR(str.toCharArray());
}
/*Example:
* str= prateek;
* str[low]=p;
* str[high]=k;
* str[low]=p^k;
* str[high]=(p^k)^k =p;
* str[low]=(p^k)^p=k;
*
* */
public static void reverseUsingXOR(char[] str) {
int low = 0;
int high = str.length - 1;
while (low < high) {
str[low] = (char) (str[low] ^ str[high]);
str[high] = (char) (str[low] ^ str[high]);
str[low] = (char) (str[low] ^ str[high]);
low++;
high--;
}
//display reversed string
for (int i = 0; i < str.length; i++) {
System.out.print(str[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
keetarp
正如其他人指出的那样,首选方法是使用:
new StringBuilder(hi).reverse().toString()
但如果你想自己实现这个,我担心其余的反应都有缺陷.
原因是String表示Unicode点的列表,char[]根据可变长度编码在数组中编码:UTF-16.
这意味着一些代码点使用数组的单个元素(一个代码单元),但其他代码使用其中两个,因此可能有一对字符必须被视为一个单元(连续的"高"和"低"代理)
public static String reverseString(String s) {
char[] chars = new char[s.length()];
boolean twoCharCodepoint = false;
for (int i = 0; i < s.length(); i++) {
chars[s.length() - 1 - i] = s.charAt(i);
if (twoCharCodepoint) {
swap(chars, s.length() - 1 - i, s.length() - i);
}
twoCharCodepoint = !Character.isBmpCodePoint(s.codePointAt(i));
}
return new String(chars);
}
private static void swap(char[] array, int i, int j) {
char temp = array[i];
array[i] = array[j];
array[j] = temp;
}
public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream("C:/temp/reverse-string.txt");
StringBuilder sb = new StringBuilder("Linear B Syllable B008 A: ");
sb.appendCodePoint(65536); //http://unicode-table.com/es/#10000
sb.append(".");
fos.write(sb.toString().getBytes("UTF-16"));
fos.write("\n".getBytes("UTF-16"));
fos.write(reverseString(sb.toString()).getBytes("UTF-16"));
}
Run Code Online (Sandbox Code Playgroud)
小智 6
最少的行代码非常简单
public class ReverseString {
public static void main(String[] args) {
String s1 = "neelendra";
for(int i=s1.length()-1;i>=0;i--)
{
System.out.print(s1.charAt(i));
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
999985 次 |
| 最近记录: |