国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

華為機(jī)試在線訓(xùn)練-??途W(wǎng)(16)字符串排序

2019-11-10 17:09:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

題目描述

編寫一個(gè)程序,將輸入字符串中的字符按如下規(guī)則排序。

規(guī)則1:英文字母從A到Z排列,不區(qū)分大小寫。

      如,輸入:Type 輸出:epTy

規(guī)則2:同一個(gè)英文字母的大小寫同時(shí)存在時(shí),按照輸入順序排列。

    如,輸入:BabA 輸出:aABb

規(guī)則3:非英文字母的其它字符保持原來(lái)的位置。

    如,輸入:By?e 輸出:Be?y

樣例:

    輸入:

   A Famous Saying: Much Ado About Nothing(2012/8).

    輸出:

   A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

輸入描述:

輸出描述:

輸入例子:
A Famous Saying: Much Ado About Nothing (2012/8).
輸出例子:
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

這是一道純字符處理問(wèn)題,難點(diǎn)在大小寫不區(qū)分排序,默認(rèn)的ASCII碼排序是區(qū)分大小寫的,而且相差32,直接排序會(huì)使所有小寫字母都排在后面。

而此題要保證:

(1)小寫字母和大寫字母不區(qū)分,而且保持原來(lái)輸入順序!

(2)非英文字母保持原樣輸出

關(guān)鍵問(wèn)題在于如何保證大小寫字母不區(qū)分且保持原來(lái)順序,目前能想到的辦法是從a到z依次去string中找,找到一個(gè)字母就添加進(jìn)來(lái):

        for(int i=0;i<26;i++){            for(auto c:str_sort){//str_sort為待排字符串                if(c=='a'+i||c=='A'+i)                    str_temp+=c;//str_temp為排序后的字符串,字母大小寫不區(qū)分且保持原序            }        }對(duì)于第二個(gè)問(wèn)題,可以拷貝一份string副本,非字母字符保持不變,字母字符以'0'替換,將經(jīng)過(guò)上述方法排序過(guò)的string替換掉該副本的所有'0'字符即可。

完整AC后的代碼:

#include <iostream>#include <string>using namespace std;int main(){    string inStr;    while(getline(cin,inStr)){        string str_temp,str_sort,str_res;        str_res=inStr;        for(auto &e:str_res){            if((e>='a'&&e<='z')||(e>='A'&&e<='Z')){                str_sort+=e;                e='0';            }        }        for(int i=0;i<26;i++){            for(auto c:str_sort){                if(c=='a'+i||c=='A'+i)                    str_temp+=c;            }        }        int i=0;        for(auto &e:str_res){            if(e=='0'){               e=str_temp[i];               i++;            }        }        cout<<str_res<<endl;;    }    return 0;}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 嘉鱼县| 龙泉市| 峡江县| 古田县| 霍城县| 正阳县| 远安县| 贡觉县| 西藏| 龙里县| 宝应县| 抚顺县| 布尔津县| 平阴县| 环江| 明光市| 龙川县| 棋牌| 措美县| 三江| 托克托县| 湘阴县| 高青县| 常州市| 虞城县| 永春县| 苗栗县| 涟源市| 福鼎市| 深水埗区| 会昌县| 山丹县| 上栗县| 安塞县| 巴林左旗| 金门县| 宁城县| 兰溪市| 林甸县| 文登市| 咸宁市|