zoukankan      html  css  js  c++  java
  • 面试经典(1)---翻转字的顺序在一个句子

    题目:输入一个英文句子,翻转句子中单词的顺序。但单词内字符的顺序不变。句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。

    比如输入“I am a student.”,则输出“student. a am I”。

    因为本题须要翻转句子。我们先颠倒句子中的全部字符。这时。不但翻转了句子中单词的顺序。并且单词内字符也被翻转了。我们再颠倒每一个单词内的字符。因为单词内的字符被翻转两次,因此顺序仍然和输入时的顺序保持一致。这个题目事实上着重考察的逻辑思维。

    void Reverse(char *pBegin, char *pEnd)
    {
    	if(pBegin == NULL || pEnd == NULL)
    		return;
    	
    	while(pBegin < pEnd)
    	{
    		char temp = *pBegin;
    		*pBegin = *pEnd;
    		*pEnd = temp;
    		
    		pBegin ++, pEnd --;
    	}
    }
    
    char* ReverseSentence(char *pData)
    {
    	if(pData == NULL)
    		return NULL;
    	
    	char *pBegin = pData;
    	char *pEnd = pData;
    	
    	while(*pEnd != '')
    		pEnd ++;
    	pEnd--;
    	
    	Reverse(pBegin, pEnd);
    	
    	pBegin = pEnd = pData;
    	while(*pBegin != '')
    	{
    		//跳过空格
    		if(*pBegin == ' ')
    		{
    			pBegin ++;
    			pEnd ++;
    			continue;
    		}
    		// A word is between with pBegin and pEnd, reverse it
    		else if(*pEnd == ' ' || *pEnd == '')
    		{
    			Reverse(pBegin, --pEnd);
    			pBegin = ++pEnd;
    		}
    		else
    		{
    			pEnd ++;
    		}
    	}	
    	return pData;
    }


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    SQL语句
    POJ2586——Y2K Accounting Bug
    POJ1328——Radar Installation
    POJ2965——The Pilots Brothers' refrigerator
    SDIBT2666——逆波兰表达式求值
    POJ1753——Flip Game
    Python全栈开发-有趣的小程序
    跑马灯效果、jquery封装、$.fn和$.extend方法使用
    js 实现浏览器全屏效果
    百度地图点聚合功能如何提高性能
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4680478.html
Copyright © 2011-2022 走看看