557.Reverse Words in a String III(String-Easy)

Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

Example 1:

Input: "Let's take LeetCode contest"
Output: "s'teL ekat edoCteeL tsetnoc"

Note: In the string, each word is separated by single space and there will not be any extra space in the string.

题目:反转字符串。给定一个字符串,保留字符串中空格和每个单词的顺序,反转每个单词。

思路:以空格为标志,对每个小结的单词进行操作

Language : cpp

class Solution {
public:
    string reverseWords(string s) {
        int front = 0;                  //记录空格后第一个字符的位置
        int str_length = s.length();    //字符串长度
        for(int i = 0; i <= str_length; i++) {
            if(i == s.length() || s[i] == ' ') {    //找到空格反转,没有空格整个字符串反转
                reverse(&s[front], &s[i]);
                front = i + 1;         
            }
        }
        return s;
    }
};

Language : python

    第一种最笨的方法:先使用split以空格为标志分开字符串,然后对每个字符串进行反转操作,再将字符串进行拼接。

class Solution(object):
    def reverseWords(self, s):
        """
        :type s: str
        :rtype: str
        """
        result = ''
        input_str = s.split(' ')
        for each in input_str:
            result = result + each[::-1] + ' '
        return result[:-1]

    第二种方法,对于第一种方法进行了改进,使用join进行拼接。

class Solution(object):
    def reverseWords(self, s):
        """
        :type s: str
        :rtype: str
        """
        return ' '.join(x[::-1] for x in s.split())

    第三种方法,不实用迭代方法,加快运行速度。首先反转每个单词的顺序,然后反转整个字符串:

class Solution(object):
    def reverseWords(self, s):
        """
        :type s: str
        :rtype: str
        """
        return ' '.join(s.split()[::-1])[::-1]

    我的LeetCode代码获取:https://github.com/Jack-Cherish/LeetCode

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LanceToBigData

JavaSE(八)之Collection总结

  前面几篇把集合中的知识大概都详细的说了一遍,但是我觉得还是要总结一下,这样的话,可以更好的理解集合。 一、Collection接口 首先我们要一张图来说明:...

24660
来自专栏xingoo, 一个梦想做发明家的程序员

【面试虐菜】—— JAVA面试题(3)

1 throws与throw的区别 解析:throws和throw是异常处理时两个常见的关键字,初级程序员常常容易正确理解throw和throws的作用和区别,...

19080
来自专栏java学习

Java每日一练(2017/8/17)

每日一句 学的到东西的事情是锻炼,学不到的是磨练。 查看以前的所有练习题目以及答案:https://mp.weixin.qq.com/mp/homepage?_...

30090
来自专栏软件开发 -- 分享 互助 成长

java arrays类学习

java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的。 具有以下功能: (1)给数组赋值:通过fill方法。 (2)对数组排序:通过s...

21460
来自专栏一个会写诗的程序员的博客

第7章 集合类第7章 集合类

在 Java 类库中有一套相当完整的容器集合类来持有对象。Kotlin没有去重复造轮子(Scala则是自己实现了一套集合类框架),而是在Java 类库的基础上进...

8720
来自专栏向治洪

Koltin数据类之解构申明

所谓的解构声明就是将一个对象解构(destructure)为多个变量,也就是意味着一个解构声明会一次性创建多个变量.简单的来说,一个解构声明有两个动作: 声明了...

248100
来自专栏积累沉淀

Python快速学习第一天

第一天: Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言 一、运行Python: 1、 在交互式环境下,直接输入Python进入Pyth...

21650
来自专栏java一日一条

Java面试题:如何对HashMap按键值排序

Java中HashMap是一种用于存储“键”和“值”信息对的数据结构。不同于Array、ArrayList和LinkedLists,它不会维持插入元素的顺序。

17720
来自专栏开发与安全

从零开始学C++之继承(二):继承与构造函数、派生类到基类的转换

一、不能自动继承的成员函数 构造函数(包括拷贝构造函数) 析构函数 =运算符 二、继承与构造函数 基类的构造函数不被继承,派生类中需要声明自己的构造函数。 ...

21000
来自专栏黑泽君的专栏

自定义异常的实现和测试以及异常的注意事项

/* * java不可能对所有的情况都考虑到,所以,在实际的开发中,我们可能需要自定义异常类。 * 而我们自己随意的写一个类,是不能作为自定义异常类来看待的...

58810

扫码关注云+社区

领取腾讯云代金券