對(duì)cpp還是不熟啊桃犬,尤其是char, char*, char[]這塊恨豁。
char* s1 = "abcde";
char s2[] = "abcde";
上邊s1 是不能被修改的沽瞭,s2可被修改。
#include <iostream>
#include <cstring>
#include <assert.h>
using namespace std;
// 翻轉(zhuǎn)單詞順序
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;
}
// 翻轉(zhuǎn)單詞順序
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);
// 翻轉(zhuǎn)整個(gè)句子
reverseWord(sen, 0, len-1);
// 翻轉(zhuǎn)每個(gè)單詞
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);
}