package com.interview.books.leetcodeoj; /** * Created_By: stefanie * Date: 15-2-4 * Time: 上午9:30 */ public class LOJ186_ReverseWordsInStringII { //reverse the entire string, then reverse by word. //1. handle edge cases: if(s == null || s.length <= 1) return; //2. handle the last word //3. when found a ' ', next word start from i+1 public void reverseWords(char[] s) { if(s == null || s.length <= 1) return; reverse(s, 0, s.length - 1); int begin = 0; for(int i = 0; i <= s.length; i++){ if(i == s.length || s[i] == ' ') { reverse(s, begin, i - 1); begin = i + 1; } } } public void reverse(char[] s, int start, int end){ while(start < end){ char temp = s[start]; s[start] = s[end]; s[end] = temp; start++; end--; } } }