剑指offer_面试题58 :翻转字符串( python实现 )

一、题目描述

题目:翻转字符串
输入一个英文句子,翻转句子中单词的顺序,但单词内字符串的顺序不变。为简单起见,标点符号和普通字母一样处理 。

  例如,输入字符串为“I am a student.”,输出 “student. a am I” 。

二、解题思路

  暂略。(此处主要作为书中python实现补充)

三、代码实现

  这里的代码在 牛客网剑指offer:翻转单词顺序列 已测试通过,具体如下:

# -*- coding:utf-8 -*-
class Solution:
    def ReverseSentence(self, s):
        # write code here
        if len(s)==0:
            return s
        arr = list(s)
        pBegin = 0
        pEnd = len(arr)-1
        arr = self.Reverse(arr,pBegin,pEnd)
        pBegin = 0
        pEnd = 0
        while pBegin < len(arr):
            if arr[pBegin] == ' ':
                pBegin = pBegin + 1
                pEnd = pEnd + 1
            elif pEnd == len(arr):
                pEnd = pEnd-1
                arr = self.Reverse(arr,pBegin,pEnd)
                pEnd = pEnd+1
                pBegin = pEnd
            elif arr[pEnd] == ' ':
                pEnd = pEnd-1
                arr = self.Reverse(arr,pBegin,pEnd)
                pEnd = pEnd+1
                pBegin = pEnd
            else:
                pEnd = pEnd+1
        returnStr = ''.join(arr)
        return returnStr
    def Reverse(self, arr, pBegin, pEnd):
        while pBegin<pEnd:
            arr[pBegin],arr[pEnd] = arr[pEnd],arr[pBegin]
            pBegin = pBegin + 1
            pEnd = pEnd - 1
        return arr

  当然,在Python代码中,还有更简单的实现方式。但我觉得,此类实现方式,在面试过程中,不一定是面试官想要的最终结果,体现不出算法的思想。当然在笔试中是没有问题的。

# -*- coding:utf-8 -*-
class Solution:
    def ReverseSentence(self, s):
        # write code here
        l=s.split(' ')
        return ' '.join(l[::-1])
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值