zoukankan      html  css  js  c++  java
  • (字符串)句子翻转

    题目:

    翻转句子中全部的单词,单词内容不变,例如

    I’m a student. ---->student. a I’am

    思路:

    与前面数组循环移动或翻转是一样的思路。

    1、每个单词单独翻转,如m’I a .tneduts

    2、翻转整个句子,如student. a I’m

    由于这里是全部翻转,所以先单独翻转,后整个翻转和先整个翻转,在单独翻转的效果是一样的。

    代码:

    #include <iostream>
    
    using namespace std;
    
    void reverse(string &str,int start,int end){
        char tmp;
        int i=start;
        int j=end;
        while(i<j){
            tmp=str[i];
            str[i]=str[j];
            str[j]=tmp;
            i++;
            j--;
        }
    }
    
    void reverse_sentence(string &str){
        int len=str.length();
        int start=0;
        int index=0;
        while(index<len){
            while(str[index]!=' ' && index<len)
                index++;
            reverse(str,start,index-1);
            while(str[index]==' ' && index<len)
                index++;
            start=index;
        }
        reverse(str,0,len-1);
    }
    
    int main()
    {
        string str="I'm a student!";
    //    cout<<str.length()<<endl; //15
    //    cout<<sizeof(str)<<endl;  //4
        reverse_sentence(str);
        cout<<str<<endl;
        return 0;
    }

    运行结果:

    image

  • 相关阅读:
    第五次作业
    第四次作业
    Java实验二
    java第一次作业
    第十一次作业
    第十次作业
    第九次作业
    第八次作业
    第七次作业
    第六次作业
  • 原文地址:https://www.cnblogs.com/AndyJee/p/4470821.html
Copyright © 2011-2022 走看看