愛悠閑 > 華為機試:倒置英文句子中單詞的字母順序

華為機試:倒置英文句子中單詞的字母順序

分類: FindWork之華為機試題  |  作者: lilioolililili 相關  |  發布日期 : 2014-10-08  |  熱度 : 517°

hello, I am good.  ->  olleh, I ma doog.

       這題其實不難,當時腦子有點糾結符號,所以沒做出來,還有一點客觀原因,平時用的VS2010,到那里用的VC,硬是用的不舒服,算了不找理由了,可以參考博文<實例>C++ 將一句話里的單詞進行倒置,標點符號不倒換。就是把第一個翻轉省略,第二個翻轉修改一下即可。

#include <iostream>
#include <cctype>
using namespace std;

void revese(char* start,char* end)
{
	while(start<end)
	{
		*start=*start^*end;
		*end=*start^*end;
		*start=*start^*end;
		start++;
		end--;
	}
}


int main()
{
	char* p=new char[1024];
	gets(p);
	int len=strlen(p);
	int i=0,j=0;

	while(i<len)
	{
		if(isalpha(p[i]))
		{
			char *start=p+i;
			j=i+1;
			while(j<len)
			{
				if(isalpha(p[j]))
				{
					j++;
				}
				else
				{
					break;
				}
			}
			char *end=p+j-1;
			revese(start,end);
		}
		i=j+1;
	}
	for(int i=0;i<len;i++)
		cout<<p[i];
	
	return 0;
}


快乐彩中奖说明