資料結構演算法題/字串按照單詞翻轉要求空間複雜度O(1)
阿新 • • 發佈:2018-11-19
/** * 先直接逆序,這樣確保最後那個單詞在前面了,只不過此時單詞是逆序的 * 然後再對每個逆序的單詞進行調整 */ public class StringWordReverse { public String wordReverse(String str){ //在逆序之後的string之後補一個空格,為了統一處理方便 String temp = new StringBuffer(str).reverse().toString()+" "; int start = 0; int end = 0; char[] charArr = temp.toCharArray(); for (int i = 0; i < charArr.length; i++) { if (charArr[i] != ' '){ end = i; }else { for (int j = 0; j < (end-start+1)/2; j++) {//單詞的長度 swap(start+j, end-j, charArr); } start = end + 2;//跳過中間的空格 end = end + 2; } } return new String(charArr); } public void swap(int i, int j, char[] charArr){ char temp = charArr[i]; charArr[i] = charArr[j]; charArr[j] = temp; } public static void main(String[] args) { StringWordReverse stringWordReverse = new StringWordReverse(); String result = stringWordReverse.wordReverse("q wfde wef"); System.out.println(result); } }