比如,輸入I am a student.
輸出 student. a am I
思路:
1. 先将這個字元串整體倒置,
2. 再将單個單詞倒置.
#include <iostream>
using namespace std;
int len(char* str);
char* reverseWord(char* str ,int i,int j);
char *strReverse(char *str);
int main(int argc, const char * argv[])
{
char str[]="I come from China.";
int length=len(str);
strReverse(str);
for (int i=0; i<length;i++)
{
cout <<str[i];
}
cout<<endl;
return 0;
}
int len(char* str) {//計算字元串的長度
int length = 0;
for(int i = 0; str[i] != '\0'; i++) {
length++;
}
return length;
}
char* reverseWord(char* str ,int i,int j) {//根據i,j的位置反轉單詞
char temp;
while(i < j) {
temp = str[i]; str[i] = str[j]; str[j] = temp;
i++; j--;
}
return str;
}
char *strReverse(char *str)
{//字元串反轉,用到了上面的函數
int length=len(str);
char *newStr=reverseWord(str,0,(length-1));
// 先翻轉整個句子
for (int i=0; i<length; i++) {
int len=0;
// 翻轉所有單詞,以空格為界
while(newStr[i] != ' ' && newStr[i] !='\0') {
len++;
i++;
}
int k = i-len,j=i-1;
reverseWord(newStr,k,j);
}
return str;
}