|
早上看到好友未央的一篇博文《一道google的测试工程师笔试题》,内容如下:
这是去年面试google测试工程师的一道题,题目如下:设计一个函数,使用任意语言,完成以下功能:一个句子,将句子中的单词全部倒排过来,但单词的字母顺序不变。比如,This is a real world,输出结果为world real a is this. 他用C++很好的封装了一个函数实现了此功能,如下,更多信息请访问:http://www.itsbug.com/?p=208
C++版本:
#include <iostream>#include <string.h>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:NONEOutput: NONEauthor: socratesblog:http://blog.csdn.net/dyx1024date:2012-02-18''' #以空格为分隔符,将各单词取出来存放在list中 str_dst = str_src.split()#反转liststr_dst.reverse()#返回反转后的list对象return str_dstif __name__ == '__main__': #遍历list,输出内容for str_out in str_reverse(raw_input("please input your sentense:")):print str_out,
测试:
[iyunv@kevin python_test]# ./str_test.pyplease input your sentense:This is a real worldworld real a is This[iyunv@kevin python_test]# ./str_test.pyplease input your sentense:中国 陕西 西安西安 陕西 中国[iyunv@kevin python_test]# |
|
|