美文网首页
翻转单词顺序

翻转单词顺序

作者: 贰拾贰画生 | 来源:发表于2017-10-19 11:55 被阅读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);
}

相关文章

  • 面试题58(剑指offer)--翻转字符串

    题目一: 翻转单词顺序。输入一个英文句子,翻转句子中单词的顺序,但单词内字符顺序不变。为简单起见,标点符号和普通字...

  • 面试题58 - I. 翻转单词顺序

    翻转单词顺序 题目描述 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通...

  • 翻转字符串

    题目:翻转单词顺序。 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字...

  • 翻转字符串

    题目一:翻转单词顺序。 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通...

  • 翻转单词顺序

    牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感...

  • 翻转单词顺序

    对cpp还是不熟啊,尤其是char, char*, char[]这块。 上边s1 是不能被修改的,s2可被修改。

  • 翻转单词顺序

    题目描述 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。...

  • 翻转单词顺序

  • 面试题58(1):翻转字符串

    题目 翻转单词顺序输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一...

  • 剑指Offer Java版 面试题58:翻转字符串

    题目一:翻转单词顺序。输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字...

网友评论

      本文标题:翻转单词顺序

      本文链接:https://www.haomeiwen.com/subject/ciduuxtx.html