2022.11.13 AM 09:00 by CBJ
來源 : 111資訊學科能力競賽複賽-彰雲嘉 標籤 : 字串處理 難易度 : 2
題目敘述 : 給定一個包含「任何」字元的字串, 請輸出編碼後的結果 例如aaabbbbbbc, 請轉成3a6b1c後輸出 輸入說明 : 輸入一個包含任意字元的字串(包含空白) 範例測資 : aaabbbbbbc,,,,######## xxyyyyzzzzz@@ 3a6b1c4,8#3 2x4y5z2@
解題想法 : 走訪字串,記錄前一個字元和連續出現次數(cnt),若當前出現和前一個重複的字元,則cnt++,否則將cnt歸回1,迴圈的i會從1~字串長,記得結束迴圈後要再做一次輸出。
//C++ language
//solution link(含註解): https://github.com/CBJ0519/CBJsProgramDiary.com/blob/main/%E8%B3%87%E8%A8%8A%E5%AD%B8%E7%A7%91%E8%83%BD%E5%8A%9B%E7%AB%B6%E8%B3%BD/111%E5%BD%B0%E9%9B%B2%E5%98%89/Q7-%E5%AD%97%E4%B8%B2%E7%B7%A8%E7%A2%BC.cpp
#include<iostream>
#include<string>
using namespace std;
int main(){
string s;
getline(cin,s);
char now=s[0];
int cnt=1;
for(int i=1;i<s.length();i++){
if(s[i]==now) cnt++;
else{
cout<<cnt<<now;
now=s[i];
cnt=1;
}
}
cout<<cnt<<now<<"\n";
return 0;
}
發佈留言