題目:
翻轉句子中全部的單詞,單詞內容不變,例如
I’m a student. ---->student. a I’am
思路:
與前面陣列迴圈移動或翻轉是一樣的思路。
1、每個單詞單獨翻轉,如m’I a .tneduts
2、翻轉整個句子,如student. a I’m
由於這裡是全部翻轉,所以先單獨翻轉,後整個翻轉和先整個翻轉,在單獨翻轉的效果是一樣的。
程式碼:
#include <iostream> using namespace std; void reverse(string &str,int start,int end){ char tmp; int i=start; int j=end; while(i<j){ tmp=str[i]; str[i]=str[j]; str[j]=tmp; i++; j--; } } void reverse_sentence(string &str){ int len=str.length(); int start=0; int index=0; while(index<len){ while(str[index]!=' ' && index<len) index++; reverse(str,start,index-1); while(str[index]==' ' && index<len) index++; start=index; } reverse(str,0,len-1); } int main() { string str="I'm a student!"; // cout<<str.length()<<endl; //15 // cout<<sizeof(str)<<endl; //4 reverse_sentence(str); cout<<str<<endl; return 0; }