早上看到好友未央的一篇博文《一道google的测试工程师笔试题》,内容如下:
设计一个函数,使用任意语言,完成以下功能:
一个句子,将句子中的单词全部倒排过来,但单词的字母顺序不变。比如,This is a real world,输出结果为world real a is this. 他用C++很好的封装了一个函数实现了此功能,如下,更多信息请访问:http://www.itsbug.com/?p=208
C++版本:
#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版本:
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,
测试:
原文链接: https://www.cnblogs.com/dyx1024/archive/2012/02/18/2556707.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/41954
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!