python中怎么将字母倒着写_Python:将句子中的单词全部倒排过来,但单词的字母顺序不变...

早上看到好友未央的一篇博文《一道google的测试工程师笔试题》,内容如下:

这是去年面试google测试工程师的一道题,题目如下:

设计一个函数,使用任意语言,完成以下功能:

一个句子,将句子中的单词全部倒排过来,但单词的字母顺序不变。比如,This is a real world,输出结果为world real a is this.  他用C++很好的封装了一个函数实现了此功能,如下,更多信息请访问:

http://www.itsbug.com/?p=208

C++版本:

#include

#include

using namespace std;

const char *Reverse(char *src);

char *pDst=NULL;

int main(int argc,char **argv)

{

cout << "please input your sentense:" << endl;

char pSrc[100];

memset(pSrc,0,100);

cin.getline(pSrc,100);

cout << Reverse(pSrc) << endl;

if (pDst != NULL)delete pDst;

return 0;

}

const char *Reverse(char *pSrc)

{

char *pPos = pSrc;

int iLen=strlen(pSrc);

pDst = new char[iLen + 1];

memset(pDst,0,iLen+1);

int iCurrentPos = 0;

int iPrePos = 0;

while (pPos)

{

if (pSrc[iCurrentPos] <= 'z' && pSrc[iCurrentPos] >= 'A')

{

iCurrentPos++;

pPos ++;

continue;

}

else

{

int iDistance =iCurrentPos-iPrePos;

for (int i=0;i < iDistance;i++)

{

pDst[iLen - iCurrentPos+i] = pSrc[iPrePos+i];

}

pDst[iLen-iCurrentPos-1]=pSrc[iCurrentPos];

iCurrentPos ++;

}

iPrePos = iCurrentPos;

if (*pPos == '\0')

{

break;

}

else

{

pPos ++;

}

}

return pDst;

}

memset(pDst,0,iLen+1);

int iCurrentPos = 0;

int iPrePos = 0;

while (pPos)

{

if (pSrc[iCurrentPos] <= 'z' && pSrc[iCurrentPos] >= 'A')

{

iCurrentPos++;

pPos ++;

continue;

}

else

{

int iDistance =iCurrentPos-iPrePos;

for (int i=0;i < iDistance;i++)

{

pDst[iLen - iCurrentPos+i] = pSrc[iPrePos+i];

}

pDst[iLen-iCurrentPos-1]=pSrc[iCurrentPos];

iCurrentPos ++;

}

iPrePos = iCurrentPos;

if (*pPos == '\0')

{

break;

}

else

{

pPos ++;

}

}

return pDst;

}

想了一下,如果此功能使用python来实现的话,可能比较方便,大致思路如下:

1. 将语句中的单词提取出来放入list中;

2. 将list反转;

3. 将反转后的list输出。

实现如下:

python版本:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

def str_reverse(str_src):

'''

Function:返转单词,以空格或TAB键为间隔符

Input:NONE

Output: NONE

author: socrates

blog:http://blog.csdn.net/dyx1024

date:2012-02-18

'''

#以空格为分隔符,将各单词取出来存放在list中

str_dst = str_src.split()

#反转list

str_dst.reverse()

#返回反转后的list对象

return str_dst

if __name__ == '__main__':

#遍历list,输出内容

for str_out in str_reverse(raw_input("please input your sentense:")):

print str_out,

测试:

[root@kevin python_test]# ./str_test.py

please input your sentense:This is a real world

world real a is This

[root@kevin python_test]# ./str_test.py

please input your sentense:中国 陕西 西安

西安 陕西 中国

[root@kevin python_test]#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值