(字串)句子翻轉

weixin_34162629發表於2015-05-01

題目:

翻轉句子中全部的單詞,單詞內容不變,例如

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

相關文章