问题描述:
请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量)。
给定一个string iniString,请返回一个string,为翻转后的字符串。保证字符串的长度小于等于5000。
测试样例:
"This is nowcoder"
返回:"redocwon si sihT"
方法一:前后进行交换
import java.util.Scanner;
/**
* @author huamanxi
* 字符串翻转
*/
public class Test{
public static String reverseString(String iniString) {
StringBuilder sb=new StringBuilder();
char[] arr=iniString.toCharArray();
for(int i=0,j=arr.length-1;i<=j;i++,j--){
char temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
for(int i=0;i<arr.length;i++){
sb.append(arr[i]);
}
return sb.toString();
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String s=in.nextLine();
String result=reverseString(s);
System.out.println(result);
}
}
This is nowcoder
redocwon si sihT
redocwon si sihT
方法二:使用StringBuilder类的自带方法
import java.util.Scanner;
/**
* @author huamanxi
* 字符串翻转
*/
public class Test{
public static String reverseString(String iniString) {
StringBuilder sb=new StringBuilder(iniString);
return sb.reverse().toString();
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String s=in.nextLine();
String result=reverseString(s);
System.out.println(result);
}
}