删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化(合并)为1个

这是一道面试题:

删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化(合并)为1个。例如把“ I    like   python     !  "变成”I like python !“。

问题很明确,关键是要减少字符的移动次数。要减少字符的移动次数,如果能一次性就把字符移到准确地位置就好了,不要做不必要的移动。下面给出用python些的简单代码。

#!/usr/bin/python

import sys

def rmblank(blankstr):
        new_start=0
        i=0
        blankspace=False
        while i<len(blankstr):
                #move behind chars to new start point
                if blankstr[i]!=' ':
                        blankstr[new_start]=blankstr[i]
                        new_start+=1
                        blankspace=True
                else:
                        #if more than one blank, move behind chars to new start point
                        if blankspace==True:
                                blankstr[new_start]=blankstr[i]
                                new_start+=1
                                blankspace=False
                i+=1
        return blankstr[0:new_start]
def main():
        blankstr=" I like   python   ! "
        print blankstr
        print ''.join(rmblank(list(blankstr)))
if __name__=='__main__':
        main()

参考文献:

Jude Zou的http://www.oschina.net/code/snippet_142087_4696

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值