翻转单词顺序

2017-10-19  本文已影响19人  贰拾贰画生

对cpp还是不熟啊,尤其是char, char*, char[]这块。

char* s1 = "abcde";
char s2[] = "abcde";

上边s1 是不能被修改的,s2可被修改。

#include <iostream>
#include <cstring>
#include <assert.h>

using namespace std;

// 翻转单词顺序
void reverseWord(char s[], int l, int r);
void reverseSentence(char sen[]);

int main() {

    char sen[] = "She is a student.";
    reverseSentence(sen);
    string s(sen);
    cout<< s<< endl;

    return 0;
}


// 翻转单词顺序
void reverseWord(char s[], int l, int r){
    assert(s == NULL || l <= r);
    while (l < r) {
        char temp = s[l];
        s[l] = s[r];
        s[r] = temp;
        l++; r--;
    }
}

void reverseSentence(char sen[]){
    if (sen == NULL) return;
    int len = strlen(sen);
    // 翻转整个句子
    reverseWord(sen, 0, len-1);
    // 翻转每个单词
    int l = 0;
    for (int r = 0; r < len; ++r) {
        if (sen[r] == ' '){
            reverseWord(sen, l, r - 1);
            l = r + 1;
        }
    }
    reverseWord(sen, l, len-1);
}
上一篇 下一篇

猜你喜欢

热点阅读