zoukankan      html  css  js  c++  java
  • 剑指offer-面试题58_1-翻转单词顺序-字符串

    /*
    题目:
    	输入一个英文句子,翻转单词顺序,但单词内部顺序不变。
    */
    /*
    思路:
    	先翻转整个句子,再将每个单词分别翻转一次。
    */
    #include<iostream>
    #include<cstring>
    #include<vector>
    #include<algorithm>
    #include<map>
    
    using namespace std;
    
    void verse(char* pBegin,char* pEnd){
        while(pEnd > pBegin){
    
            char temp = *pBegin;
            *pBegin = *pEnd;
            *pEnd = temp;
            pBegin++;
            pEnd--;
        }
    }
    
    char* ReverseSentence(char* pData){
        char* pBegin = pData;
        char* pEnd = pData;
        while(*pEnd != ''){
            pEnd++;
        }
        pEnd--;
        verse(pBegin,pEnd);
        char* res = pData;
    
    
        pBegin = pEnd = pData;
        while(*pBegin != ''){
            if(*pBegin == ' '){
                pBegin++;
                pEnd++;
            }else if(*pEnd == ' ' || *pEnd == ''){
                verse(pBegin,--pEnd);
                pBegin = ++pEnd;
            }else{
                pEnd++;
            }
        }
        return pData;
    
    }
    
    int main(){
       char pData[] = "I am a student.";
       char* res = ReverseSentence(pData);
       while(*res != ''){
            cout<<*res;
            res++;
       }
    }
    

      

  • 相关阅读:
    Angular @Input讲解及用法
    跨浏览器窗口通讯 ,7种方式
    map和forEach的区别
    纯CSS圆环与圆
    如何理解时间复杂度和空间复杂度
    毁灭
    P1631 序列合并
    plotly dash
    Tkinter
    mysql 和 sqlalchemy 的一个测试环境
  • 原文地址:https://www.cnblogs.com/buaaZhhx/p/12109528.html
Copyright © 2011-2022 走看看