• 面试经典(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;
    }


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

  • 相关阅读:
    升级salt导致进程kill问题记录
    记一次centos6升级salt-minion启动失败的问题
    3.ElasticSearch的倒排索引
    4.ElasticSearch的基本api操作
    1.ElasticSearch介绍及基本概念
    10.openldap备份与恢复
    1.Python3.6环境部署
    8.openldap mirrormode(主主同步)
    7.openldap使用ssl加密认证
    Python json解析
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4680478.html
Copyright © 2020-2023  润新知