LeetCode: 翻转字符串里的单词

翻转字符串里的单词

题目叙述

给定一个字符串,逐个翻转字符串中的每个单词。

示例:

输入: “the sky is blue”,
输出: “blue is sky the”.

说明:
  • 无空格字符构成一个单词。
  • 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
  • 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
解题思路:

这一道题站在Java的角度上来说比较简单实现,也就是将原字符串根据” “开始进行分割成为一个字符串数组,开始对数组从后往前进行遍历,因为在单词可能有多个” “,因此在字符串进行调用trim()函数(它的作用也就是将字符串中的头和尾部的空格去掉),之后如果字符串不为空说明它是一个单词添加进结果集中即可,C语言实现的可以自己实现一下这个方法就好了。按” “分割也可以使用C语言自己实现就好了。这一道题比较简单。时间复杂度是O(n)。

代码实现:
public class Solution {
   public String reverseWords(String s) {
       StringBuffer res=new StringBuffer();
       if (s==null||s.trim().length()==0){
           return res.toString();
       }
       List<String> list=new ArrayList<>();
       String[] strs=s.split(" ");
       for (int i=strs.length-1;i>-1;--i){
           if (strs[i].trim().length()>0){
               list.add(strs[i].trim());
           }
       }
       res.append(list.get(0));
       for (int i=1;i<list.size();++i){
           res.append(" ");
           res.append(list.get(i));
       }
       return res.toString();
   }
}
    原文作者:一萍之春
    原文地址: https://www.jianshu.com/p/6ea84c0b20f6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞