输入:“how are you”
输出:“you are how”
示例代码1
package Test_10;
/**
* 实现字符串的反转
* @author msi
*
*/
public class Test {
public static void main(String[] args){
String str = "how are you";
Test test = new Test();
System.out.println(test.swapWords(str));
}
private String swapWords(String str) {
char[] arr = str.toCharArray();
//对整个字符串进行反转
swap(arr,0,arr.length-1);
//对每个单词进行反转
int begin = 0;
for(int i = 0;i< arr.length-1;i++){
if(arr[i]==' '){//如果遇到空格
swap(arr, begin, i-1);
begin = i+1;
}
}
swap(arr, begin, arr.length-1);
return new String(arr);
}
/**
* 反转
* @param arr:待翻转的字符数组
* @param l:开始下标
* @param r:末尾下标
*/
private void swap(char[] arr, int l, int r) {
while(l<r){
char temp = arr[r];
arr[r] = arr[l];
arr[l] = temp;
l++;
r--;
}
}
}
示例代码2
使用StringBuffer中的reverse()方法实现反转
package Test_10;
/**
* 实现字符串的反转
* @author msi
*
*/
public class Test {
public static void main(String[] args){
String str = "how are you";
Test test = new Test();
System.out.println(test.swapWords(str));
}
private String swapWords(String str) {
char[] arr = str.toCharArray();
//对整个字符串进行反转
swap(arr,0,arr.length-1);
//对每个单词进行反转
int begin = 0;
for(int i = 0;i< arr.length-1;i++){
if(arr[i]==' '){//如果遇到空格
swap(arr, begin, i-1);
begin = i+1;
}
}
swap(arr, begin, arr.length-1);
return new String(arr);
}
/**
* 反转
* @param arr:待翻转的字符数组
* @param l:开始下标
* @param r:末尾下标
*/
private void swap(char[] arr, int l, int r) {
StringBuffer str = new StringBuffer();
for(int i=l;i<=r;i++){
str.append(arr[i]);
}
//使用StringBuffer中的reverse()方法实现反转
char[] temp = str.reverse().toString().toCharArray();
for(int i=l,j=0;i<=r;i++){
arr[i] = temp[j];
j++;
}
}
}