早上看到好友未央的一篇博文《一道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..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]#

python编程试题单词倒排_Python:将句子中的单词全部倒排过来,但单词的字母顺序不变...相关推荐

  1. C语言编程>第二十五周 ② 下列程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母,若为小写字母为v~z,使小写字母的值减21,转换后的小写字母作为函数值返回。

    例题:下列程序中,函数fun的功能是:将大写字母转换为对应小写字母之后的第五个字母,若为小写字母为v-z,使小写字母的值减21,转换后的小写字母作为函数值返回. 例如,若形参是字母A,则转换为小写字母 ...

  2. python编程能有什么用_python编程能做什么开发

    Python作为一种功能强大,并井且简单易学的编程语言而广受好评,那么Python都能做么?概据起来有以下几个方面. 1.Web开发 使用Python的一个基本应用就是进行Web开发,在国内,大一些的 ...

  3. python 编程该看那些书籍_python编程入门书籍-零基础学习Python编程,这8本书必看!...

    作为一名程序员,你肯定知道Python语言,从2017年开始Python的热度就一路飙升,已经成为大量开发者推荐入门的编程语言和第二编程语言,而且Python还是人工智能的主要编程语言,受到大众的追捧 ...

  4. python编程软件手机版下载_Python编程狮

    Python编程狮app是一款旨在为想要学习软件编程用户量身打造的手机客户端,用户可任意查看有关平台发布的各类教程视频内容进行了解,只需在线点击需要学习的教程名称即可直接进入详情界面学习:平台针对不同 ...

  5. python英文字符串单词个数统计_python统计字符串中单词数量

    展开全部 使用比较基本的方法写的参考代码:#!/usr/bin/env python # -*- coding: utf-8 -*- #python 2.7 import re print u'请输入 ...

  6. python输入一个英文句子、翻转句子中单词的顺序_Python反转句子中单词的顺序

    输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如:输入'I am a student.',则输出'student. ...

  7. python解非线性规划问题讲析_python中线性规划中的单纯形法、scipy库与非线性规划求解问题...

    单纯形法.scipy库与非线性规划求解问题 单纯形法的基本定义 大M法求解线性规划的原理 excel求解 Python调用optimize包和scipy求解线性规划 Python编程实现单纯形法 对比 ...

  8. python列表根据值找索引_python实现列表中由数值查到索引的方法

    python实现列表中由数值查到索引的方法 如下所示: 以上这篇python实现列表中由数值查到索引的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 时间: 201 ...

  9. python判断网页密码加密方式_Python模拟网页中javascript加密与验证的相关处理

    在做网络爬虫的过程中你是否一些在这方面做的很好的网站,你向知道他是通过哪些相关的操作做出这么好的网站,以下就是文章的相关内容的具体介绍,希望你浏览完下面的内容会有所收获.Python模拟网页的java ...

最新文章

  1. mint-UI引用后样式不对
  2. “新内容 新交互”全球视频云创新挑战赛复赛启幕
  3. Linux进程和计划任务管理(详细图例)
  4. linux学习工作记录----配置基于ip的虚拟主机
  5. NYOJ -123 士兵杀敌(四)
  6. 全方位分析web前端如何进行性能优化
  7. c语言的单行注释范围,c语言中的注释,multi-line comment
  8. PyQt5入门——删除、清空layout布局中的所有对象(含常见问题详解)
  9. ECMAScript 运算符--逗号运算符
  10. TensorFlow手把手教你概率编程:TF Probability内置了开源教材,新手友好
  11. 第八届蓝桥杯java b组第十题
  12. Make sure you've included captcha.urls as explained in the INSTALLATION section on
  13. HTK搭建大词汇量连续语音识别系统(三)
  14. 校园网使用家用无线路由器
  15. scp 传输文件到另一台服务器
  16. java qo_Java中DAO/DTO/PO/VO/BO/QO/POJO
  17. 初读YOLOv1算法
  18. ZXing 生成二维码和条形码
  19. KZ笔记5:连跳丧失速度的原因
  20. 一维卷积Conv1D

热门文章

  1. java 随机手机验证码_基于Java随机生成手机短信验证码的实例代码|chu
  2. mysql 开启binglog
  3. 前端自适应----单位rem
  4. Python图像处理库PIL的ImageStat模块介绍
  5. Python3之requests模块
  6. Android Train—notification通知
  7. 在Linux-0.11中实现基于内核栈切换的进程切换
  8. IOS-简单WebView的使用
  9. leetcode 70 python (动态规划)
  10. Java基础——枚举类的使用教程