[leetcode]151. Reverse Words in a String翻转给定字符串中的单词

it2025-12-05  27

Given an input string, reverse the string word by word.

Example:

Input: "the sky is blue",Output: "blue is sky the".Note:

A word is defined as a sequence of non-space characters.Input string may contain leading or trailing spaces. However, your reversed string should not contain leading or trailing spaces.You need to reduce multiple spaces between two words to a single space in the reversed string.Follow up: For C programmers, try to solve it in-place in O(1) space.

 

 

思路

1.  split by a single or multiple spaces, making sure remove leading or trailing spaces

2. to reverse,  traverse the input from right to left,  append each item into StringBuilder

 

代码

1 public class Solution { 2 public String reverseWords(String s) { 3 // corner case 4 if(s == null || s.length() == 0) return ""; 5 // s.trim() 去除leading or trailing spaces 6 // s.split("\\s+")根据a single or multiple spaces 来split字符串 7 String[] words = s.trim().split("\\s+"); 8 // use StringBuilder to save result 9 StringBuilder sb = new StringBuilder(); 10 // to reverse, from right to left 11 for(int i = words.length-1; i >= 0; i--){ 12 sb.append(words[i]+" "); 13 } 14 // 确保结果中去除了leading or trailing spaces 15 return sb.toString().trim(); 16 } 17 }

 

转载于:https://www.cnblogs.com/liuliu5151/p/9901268.html

最新回复(0)