華為OJ(字串合併處理)

2021-07-04 20:19:06 字數 1315 閱讀 1109

描述

按照指定規則對輸入的字串進行處理。

詳細描述:

將輸入的兩個字串合併。

對合併後的字串進行排序,要求為:下標為奇數的字元和下標為偶數的字元分別從小到大排序。這裡的下標意思是字元在字串中的位置。

對排訓後的字串進行操作,如果字元為『0』——『9』或者『a』——『f』或者『a』——『f』,則對他們所代表的16進製制的數進行bit倒序的操作,並轉換為相應的大寫字元。如字元為『4』,為0100b,則翻轉後為0010b,也就是2。轉換後的字元為『2』; 如字元為『7』,為0111b,則翻轉後為1110b,也就是e。轉換後的字元為大寫『e』。

舉例:輸入str1為"dec",str2為"fab",合併為「decfab」,分別對「dca」和「efb」進行排序,排序後為「abcedf」,轉換後為「5d37bf」

介面設計及說明:

/*功能:字串處理

輸入:兩個字串,需要異常處理

輸出:合併處理後的字串,具體要求參考文件

返回:無

*/void processstring(char* str1,char *str2,char * stroutput)

知識點字串,排序,位運算

執行時間限制

10m記憶體限制

128輸入

輸入兩個字串

輸出輸出轉化後的結果

樣例輸入

dec fab

樣例輸出

5d37bf

開始理解錯了,其實題目中說奇數下標排序,偶數下標排序是在合併字串後的排序,不是奇偶單獨排序後合併。

容易出錯的是:題目只是對0-9 a-f或a-f之間的字元進行轉換,對於比如:i j k等字元只是排序就夠了。

#include#includeusing namespace std;

void str_sort(string& s)//奇數小標排序,偶數排序

} for(int i=1;is[j])

}}void prostr(string& s)

if(flag)

if(tran>9)

s[i]=tran-10+'a';

else

s[i]=tran+'0';

} }}int main()

{ string s1,s2;

cin>>s1>>s2;

s1+=s2;

str_sort(s1);

prostr(s1);

cout<

華為OJ 字串合併處理

字串合併處理 按照指定規則對輸入的字串進行處理。詳細描述 將輸入的兩個字串合併。對合併後的字串進行排序,要求為 下標為奇數的字元和下標為偶數的字元分別從小到大排序。這裡的下標意思是字元在字串中的位置。對排訓後的字串進行操作,如果字元為 0 9 或者 a f 或者 a f 則對他們所代表的 16進製制...

華為 OJ 字串合併處理

按照指定規則對輸入的字串進行處理。詳細描述 將輸入的兩個字串合併。對合併後的字串進行排序,要求為 下標為奇數的字元和下標為偶數的字元分別從小到大排序。這裡的下標意思是字元在字串中的位置。對排訓後的字串進行操作,如果字元為 0 9 或者 a f 或者 a f 則對他們所代表的16進製制的數進行bit倒...

華為OJ 字串合併處理

按照指定規則對輸入的字串進行處理。詳細描述 將輸入的兩個字串合併。對合併後的字串進行排序,要求為 下標為奇數的字元和下標為偶數的字元分別從小到大排序。這裡的下標意思是字元在字串中的位置。對排序後的字串進行操作,如果字元為 0 9 或者 a f 或者 a f 則對他們所代表的16進製制的數進行bit倒...