HJ31 单词倒排
描述
對(duì)字符串中的所有單詞進(jìn)行倒排。
說明:
1、構(gòu)成單詞的字符只有26個(gè)大寫或小寫英文字母;
2、非構(gòu)成單詞的字符均視為單詞間隔符;
3、要求倒排后的單詞間隔符以一個(gè)空格表示;如果原字符串中相鄰單詞間有多個(gè)間隔符時(shí),倒排轉(zhuǎn)換后也只允許出現(xiàn)一個(gè)空格間隔符;
4、每個(gè)單詞最長(zhǎng)20個(gè)字母;
輸入描述:
輸入一行以空格來分隔的句子
輸出描述:
輸出句子的逆序
思路一:
使用棧的先進(jìn)后出的特點(diǎn),或者使用vector,之后逆序輸出兩種方式。
#include <iostream> #include <string> #include <stack> using namespace std;//處理字符串 void manageStr(string str){stack<string> st; //定義棧,先進(jìn)后出string temp_str;for(int i=0;i<str.size();i++){if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z')){ //把字母進(jìn)行拼接temp_str+=str[i];}else{if(temp_str!=" "){ //遇到空格處理,把拼接的單詞壓入棧st.push(temp_str);temp_str.clear();}}if (i == str.size()-1) st.push(temp_str); // 最后一個(gè)字符放入棧中}while(!st.empty()){cout << st.top() <<" ";st.pop();}}int main(){string str; //定義用來獲取字符串?dāng)?shù)據(jù)getline(cin, str); //獲取字符串上面一行數(shù)據(jù)manageStr(str); //處理字符串return 0; }// int main(){ // string str,result; // while(cin>>str){ // str += " "+result; // result = str; // } // cout << str; // return 0; // }總結(jié)
- 上一篇: HJ14 字符串排序
- 下一篇: HJ106 字符逆序