Total Accepted: 421
Total Submissions: 1404
Given an input string, reverse the string word by word. A word is defined as a sequence of non-space characters.
The input string does not contain leading or trailing spaces and the words are always separated by a single space.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
Could you do it in-place without allocating extra space?
[思路]
反转整个字符串, 再反转每个单词即可
[注意]
None
[DODE]
public class Solution { //the sky is blue public void reverseWords(char[] s) { //input check if(s.length<=1) return; swap(s, 0, s.length-1); int i=0, j=1; while(j<s.length) { while(j<s.length && s[j]!=' ') { ++j; } swap(s, i, j-1); i = j+1; j = i+1; } } private void swap(char[] s, int i, int j) { while(i<j) { char temp = s[i]; s[i] = s[j]; s[j] = temp; ++i; --j; } } }
时间: 2024-10-29 19:07:16