翻转单词顺序

对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);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的...
    NoFacePeace阅读 1,209评论 0 0
  • 翻转单词顺序列 题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事C...
    Jacinth阅读 3,064评论 0 0
  • 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字啊的顺序不变。为简单起见,标点符号和普通字母一样处理。 代...
    3e1094b2ef7b阅读 1,137评论 0 0
  • 题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的...
    quiterr阅读 2,732评论 0 0
  • 题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例...
    qmss阅读 3,106评论 0 0