题目描述: 字符串“i am a student”逆置为“student a am i”;
思路:
第一次逆置:先将整个字符串都逆置:“tneduts a ma i”
第二次逆置再将每个单词逆置“student a am i”,利用空格找出一个单词进行逆置
代码:
public class TestDemo2 {
//首尾交换,头++,尾--,实现逆置
public static void swap(char[] arr, int begin, int end) {
while (begin <= end) {
char temp = arr[begin];
arr[begin] = arr[end];
arr[end] = temp;
begin++;
end--;
}
}
public static String reverseSentence(String str) {
char[] arr1 = str.toCharArray();
//全部翻转
swap(arr1, 0, arr1.length - 1);
int begin = 0;
int i = 0;
for (; i < arr1.length; i++) {
//如果arr1 == “ ”,则找出了一个单词
if (arr1[i] == ' ') {
//对单词进行逆置
swap(arr1, begin, i - 1);
//更新下一个单词的头位置
begin = i + 1;
}
}
//逆置最后一个单词
swap(arr1,begin,arr1.length-1);
return new String(arr1);
}
public static void main(String[] args) {
String str3 = "i am biter";
String str4 = reverseSentence(str3) ;
System.out.println(str4);
}
}