Python:文の中の単語を全部逆さまに並べますが、単語のアルファベット順は変わりません
3471 ワード
朝、親友の未央のブログ「googleのテストエンジニアの筆記試験問題」を見て、内容は以下の通りです.
C++バージョン:
考えてみると、この機能をpythonで実現すると便利かもしれませんが、大まかな考え方は以下の通りです.
1.文中の単語を抽出してリストに入れる.
2.listを反転する.
3.反転したリストを出力します.
次のようになります.
pythonバージョン:
テスト:
google , :
, , :
, , 。 ,This is a real world, world real a is this.
彼はC++で1つの関数をよくカプセル化してこの機能を実現しました.以下のように、詳細はアクセスしてください.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.文中の単語を抽出してリストに入れる.
2.listを反転する.
3.反転したリストを出力します.
次のようになります.
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]#