53、翻转字符串中的单词

描述

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

说明

 

  • 单词的构成:无空格字母构成一个单词
  • 输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括
  • 如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个

样例

给出s = "the sky is blue",返回"blue is sky the"

 

一、python实现

class Solution:
    """
    @param: s: A string
    @return: A string
    """
    def reverseWords(self, s):
        return ' '.join(reversed(s.strip().split()))

只需一句简单地语句实现,是不是很牛逼

分析如下:

1、str.join(iter)————join()函数

   在iter变量中,除最后元素外每一个元素后增加一个str作为分隔。

例如:

记忆方法:str.join(元组、列表、字典、字符串),之后生成的只能是字符串

                  故很多时候生成元组、列表、字典后,可以使用join()来转化为字符串

2、reversed()函数

  reversed函数返回一个反转的迭代器:reversed(seq )  ———— seq是要转换的序列,可以使tuple、string、list或者range

  reversed()的返回值是一个把序列值经过反转之后的迭代器,故需要通过遍历或者list、tuple、next()等方法,获得反转后的值

例如:

3、strip()函数

用于移除字符串头尾指定的字符(默认为空格或者换行符)或字符序列。

该方法只能删除开头或者结尾点的字符,不能删除中间部分的字符

4、split()函数

str.split(str = "", num = string.count(str))

str:分隔符,默认为所有的空字符:包括空格、换行(\n)、制表符(\t)等

num:分割次数,默认为-1,即分割所有。

总结:通过指定分隔符对字符串进行切片,如果参数num有指定值,则分隔num+1个字符串

返回值:分割后的字符串列表

 

二、C++实现

class Solution {
public:
    /*
     * @param s: A string
     * @return: A string
     */
    string reverseWords(string &s) 
    {
        string cur = "";
        stack<string> sta;  //定义stack对象
        int len = s.length();
        for (int i = 0; i < len; ++i)
        {
            if (s[i] == ' ' && cur == "")
            ;
            else if (s[i] == ' ' && cur != "")
            {
                sta.push(cur);
                cur = "";
            }
            else
            {
                cur += s[i];
            }
        } 
        if (cur != "") sta.push(cur);
        cur = "";
        while(! sta.empty())
        {
            string temp = sta.top();
            sta.pop();
            cur += temp;
            if (! sta.empty()) cur += " ";
        }
        return cur;
    }
        
};

(一)、stack的说明

C++  的 stack(堆栈)是一个容器的改编,它实现了一个先进后出的数据结构(FILO)

使用该容器时需要包含#include<stack>头文件;

                                                定义stack对象的示例代码如下

stack<int>s1;

stack<string>s2;

                                                       stack的基本操作有

1、入栈:如s.push(x)

2、出栈:如 s.pop().注意:出栈操作只是删除栈顶的元素,并不返回该元素

3、访问栈顶:如s.top()

4、判断栈空:如s.empty().当栈空时返回true

5、访问栈中的元素个个数:如s.size()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值