[LeetCode]-Reverse Words in a String
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue",
return "blue is sky the".
Clarification:
- What constitutes a word?
A sequence of non-space characters constitutes a word. - Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces. - How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
/*解题思路: * 1.将输入字符串首尾的空格去掉,并将字符串中出现的多个连续空格替换成一个 * 2.翻转每个单词 * 3.翻转整个字符串*/ public class Solution { private void reverseWord( char[] arr, int start, int end ){ char temp; while( start<end ){ temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; } } public String reverseWords(String s) { String str = s.trim().replaceAll("\\s+", " "); int len = str.length(); char[] arr_str = str.toCharArray(); int start = 0; int end = 0; while( start<len ){ end = start; while( end<len && arr_str[end]!=' ' ){ end++; } reverseWord( arr_str, start, end-1 ); start = end+1; } reverseWord( arr_str, 0, len-1 ); return new String( arr_str ); } }
浙公网安备 33010602011771号