我有一个字符串变量 hi
,其中包含 "Hello World"
。
我需要将其反转后打印出来。
我该如何做?我知道Java中已经内置了一种函数可以实现这个功能。
我有一个字符串变量 hi
,其中包含 "Hello World"
。
我需要将其反转后打印出来。
我该如何做?我知道Java中已经内置了一种函数可以实现这个功能。
new StringBuilder(hi).reverse().toString()
Java 5新增了StringBuilder
类,而在Java 5之前的版本中可以使用StringBuffer
类代替,因为它们具有相同的API。
StringBuilder
的情况下,并不需要考虑并发性(我认为这就是他的意思)。 - xehpukString hi = "Hello World";
。因此,我认为在您的答案中不应该有任何双引号围绕 hi
。我的意思是它应该像这样:new StringBuilder(hi).reverse().toString()
。 - Md. Abu Nafee Ibna Zahid对于不允许使用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);
}
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();
}
http://www.java2s.com/Code/Java/Language-Basics/ReverseStringTest.htm
String string="whatever";
String reverse = new StringBuffer(string).reverse().toString();
System.out.println(reverse);
我将使用以下两种方法进行操作:
按字符反转字符串:
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());
}
按单词反转字符串:
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);
}
StringBuilder/StringBuffer
来声明 result
变量,以避免多次创建对象! - Ehsan Mashhadi请查看 Java 6 API 中的 StringBuffer 部分
String s = "sample";
String result = new StringBuffer(s).reverse().toString();
reverse()
和toString()
),因此差异可能甚至无法测量。 - jcsahnwaldt Reinstate Monica这里是一个使用递归的例子:
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);
}
我只是出于娱乐目的,尝试使用栈。这是我的代码:
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();
}
这里是一个低级别的解决方案:
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));
}
}
charAt()
方法String name = "gaurav";
String reversedString = "";
for(int i = name.length() - 1; i >= 0; i--){
reversedString += name.charAt(i);
}
System.out.println(reversedString);
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);
reverse()
方法String name = "gaurav";
String reversedString = new StringBuilder(name).reverse().toString();
System.out.println(reversedString);