要求將以下字符串
String str = "student a am I";
轉爲
"I am a student"
實現代碼
public class Main {
public static void main(String[] args) {
String str = "student a am I";
System.out.println(reverseStringSequence(str));
}
public static String reverseStringSequence(String str) {
char[] seq = str.toCharArray();
int length = seq.length;
// 定義兩個指針記錄要反轉單詞的起始位置
int start = 0;
int end = 0;
// 這裏一定要含有等於,因爲要判斷是否是最後一個單詞,從而可以處理最後一個單詞
while (end <= length) {
// 當已經遍歷到字符串的最後一個字符,或者當前字符是空格時
// 則對空格前的單詞進行反轉,即"am"反轉爲"ma"
// 一定要把判斷是否是結尾放在前面,否則seq[end]會報錯,因爲數組的有效索引是從0開始的
// 反轉後修改單詞的起始指針爲空格的下一個字符
// 如果不符合條件,則移動指針繼續判斷下一個字符
if (end == length || seq[end] == ' ') {
reverse(seq, start, end - 1);
start = end + 1;
}
end++;
}
// 反轉這個數組
reverse(seq, 0, length - 1);
return new String(seq);
}
private static void reverse(char[] seq, int start, int end) {
while (start < end) {
char temp = seq[start];
seq[start] = seq[end];
seq[end] = temp;
start++;
end--;
}
}
}