NO.6 牛客网刷题|翻转单词顺序列

前言:主要记录python中的reverse和split用法。

题目描述:

牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?

思路记录:最开始是打算将输入反向输出,但是结果并不是 i am a student.而是“i ma a tneduts”。然后就在此基础上,思考能不能以空格为边界,将单词作为一个子列表整体append到一个大的列表中,然后再输出。想实现的是: m.append(student)+空格+m.append(a)....+m.append(i),这样再反向输出,就能得到想到的结果。但是试了很久没有实现出来。sigh...看了一串答案,很多是用reverse和split,join一起实现的,这明显不是题目的意思吧。anyway,这个想法先留着,再思考一下怎么实现,先把简单的实现方法总结学习一下。

reverse()函数是python中翻转数列的三种方法之一。

方法一:reverse()函数

a=[1,2,3,4,5,6,6]
a.reverse()
a
[6, 6, 5, 4, 3, 2, 1]
方法二:sorted()函数
a=[23,22,53,43,45,26,6]
c=sorted(a)
c
[6, 22, 23, 26, 43, 45, 53]

方法三:使用分片(切片)

a=[23,22,53,43,45,26,6]
c=a[::-1]
c
[6, 26, 45, 43, 53, 22, 23]

split():是制定分隔符号对字符串进行切片。

split("分隔符")

s='wo ai zhong guo'
c=s.split(' ')
c
['wo', 'ai', 'zhong', 'guo']  #注意返回的是一个列表。我之前想要寻找的方法就是表达法出单词分离的,split就能很好的实现。

------------------

# -*- coding:utf-8 -*-
class Solution:
    def ReverseSentence(self, s):
        # write code here
        #判断边界
        if len(s)==0:
            return s
        #思路:将字符串转成列表,然后已栈的形式输出.但是这样输出的结果每个单词都反转了。
        #思路二:以空格为边界,遇到空格就将其输出。
        #思路三:用split方法
        res=s.split()
        if not res:
            return s
        return " ".join(res[::-1])
    
总结:reverse()函数能够将数列翻转但是不能排序。split()函数可以根据不同制定符号来分离字符,返回的是一个数组形式。join()函数将数组转换成字符串。



你可能感兴趣的:(python,数据结构与算法)