美文网首页LeetCode交流
LeetCode: 翻转字符串里的单词

LeetCode: 翻转字符串里的单词

作者: 一萍之春 | 来源:发表于2019-02-17 22:41 被阅读21次

    翻转字符串里的单词


    题目叙述

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

    示例:

    输入: "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();
       }
    }
    

    相关文章

      网友评论

        本文标题:LeetCode: 翻转字符串里的单词

        本文链接:https://www.haomeiwen.com/subject/xagneqtx.html