zoukankan      html  css  js  c++  java
  • 编程算法

    翻转单词顺序 代码(C)


    本文地址: http://blog.csdn.net/caroline_wendy


    题目: 输入一个英文句子, 翻转句子中单词的顺序, 但单词内字符的顺序不变.


    首先翻转(reverse)整个句子, 然后查找空格, 如遇到空格, 则翻转前面的单词, 或遇到结束符, 相同进行翻转.


    代码:

    /*
     * main.cpp
     *
     *  Created on: 2014.9.19
     *      Author: spike
     */
    
    #include <iostream>
    #include <vector>
    #include <climits>
    
    #include <cstring>
    
    using namespace std;
    
    void Reverse(char* begin, char* end) {
    	if (begin == NULL || end == NULL)
    		return;
    	while(begin < end) {
    		char tmp = *begin;
    		*begin++ = *end;
    		*end-- = tmp;
    	}
    }
    
    char* ReverseWords(char* data) {
    	if (data == NULL) return NULL;
    	int len = strlen(data);
    	char* begin = data;
    	char* end = &data[len-1];
    	Reverse(begin, end);
    	begin = end = data;
    	while(*begin != '') {
    		if (*begin == ' ') {
    			begin++;
    			end++;
    		} else if (*end == ' ' || *end == '') {
    			Reverse(begin, --end);
    			begin = ++end;
    		} else {
    			++end;
    		}
    	}
    	return data;
    }
    
    int main(void)
    {
    	char data[] = "I am Spike.";
    	char* res = ReverseWords(data);
    	cout << res << endl;
    
        return 0;
    }
    



    输出:

    Spike. am I
    









  • 相关阅读:
    一、第一个小程序
    Golang学习笔记
    第四章 自上而下分析
    个人vim配置
    第三章 词法分析
    3.7 TCP拥塞控制
    3.6 拥塞控制原理
    3.5 面向连接的运输:TCP
    3.4可靠数据传输的原理
    3.3 无连接运输:UDP
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/3994159.html
Copyright © 2011-2022 走看看