T1129 行程長度編碼
描述
在資料壓縮中,一個常用的途徑是行程長度壓縮。對於一個待壓縮的字串而言,我們可以依次記錄每個字元及重複的次數。這種壓縮,對於相鄰資料重複較多的情況比較有效。 例如,如果待壓縮串為"AAABBBBCBB",則壓縮的結果是(A,3)(B,4)(C,1)(B,2)。當然,如果相鄰字元重複情況較少,則壓縮效率就較低。
現要求根據輸入的字串,得到大小寫不敏感壓縮後的結果(即所有小寫字母均視為相應的大寫字母)。
輸入
一個字串,長度大於0,且不超過1000,全部由大寫或小寫字母組成。
輸出
輸出為一行,表示壓縮結果,形式為:(A,3)(B,4)(C,1)(B,2) 即每對括號內部分別為字元(都為大寫)及重複出現的次數,不含任何空格。
樣例輸入
aAABBbBCCCaaaaa
樣例輸出
(A,3)(B,4)(C,3)(A,5)
解題思路:
遍歷字串,找到連續的相同字母(大小寫皆可),用結束位置的後一位減去開始位置,便是長度,輸出(該字母大寫,長度)即可,下面是程式碼實現
#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
int main() {
string a;
cin >> a;
int length = a.length();
int i = 0 , j ;
while(i != length ) {
for(j = i; j < length; j++) {
if(!(a[i] == a[j] || a[i] == a[j] - 32 || a[i] == a[j] + 32) || j == length) {
break;
}
else continue;
}
if(a[i] >= 'A' && a[i] <= 'Z')
cout << "(" << char(a[i]) << ',' << j - i << ")" ;
else if(a[i] >= 'a' && a[i] <= 'z')
cout << "(" << char(a[i]-32) << ',' << j - i << ")" ;
i = j;
}
return 0;
}
相關文章
- 影像壓縮編碼碼matlab實現——行程編碼Matlab行程
- Base58編碼的長度是如何計算的?
- 如何增長程式碼長度
- 擷取 UTF8 編碼字串從首位元組開始指定寬度 (非長度)字串
- vscode怎麼執行程式碼HTML 怎麼在vscode編寫HTML程式碼VSCode行程HTML
- 程式碼行數能衡量編碼進度嗎?
- eas_批次更新組織長編碼,長名稱
- 編寫一個程式求輸入字串的長度字串
- 學習編碼需要多長時間?
- vue3 模板編譯 —— 30 行程式碼實現 .sync 修飾符Vue編譯行程
- 100行程式碼,輕鬆搞定文字編輯器中草稿箱行程
- 設定Vim編輯器裡Tab的長度,行號
- 【編測編學】零基礎學python_08_列表(排序+反轉+長度)Python排序
- 經緯度編碼方法推薦-pluscode簡介
- 還在拼冗長的WhereIf嗎?100行程式碼解放這個操作行程
- 十餘行程式碼完成遷移學習,百度PaddleHub實戰解讀行程遷移學習
- 500行程式碼手寫docker開篇-goland遠端編譯環境配置行程DockerGoLand編譯
- Laravel-生成唯一固定長度邀請碼Laravel
- 兩行程式碼 寫個代理行程
- 聊聊如何進行程式碼混淆行程
- Pycharm中分段執行程式碼PyCharm行程
- 7行程式碼,徹底行程
- 隨機生成一個指定長度的驗證碼隨機
- 一行程式碼讓微信、頭條、百度、支付寶小程式支援 cookie行程Cookie
- 一行程式碼實現簡單的唯一定長ID的生成。行程
- 自己寫個網盤系列:② 看我用不到700行程式碼,完成了個網盤後端編碼行程後端
- 為了簡寫這行程式碼,我竟使用靜態和動態編譯技術行程編譯
- 無需編寫一行程式碼,實現任何方法的流量防護能力行程
- 有關Linux的可執行程式——動態編譯、靜態編譯、readelfLinux行程編譯
- 單行程式碼演算法解答行程演算法
- 一行程式碼建立cell行程
- 使用Git Bash進行程式碼管理Git行程
- 幾行程式碼實現RPC框架行程RPC框架
- 200 行程式碼講透 Rust Futures行程Rust
- 在 markdown 中執行程式碼片段行程
- jvm執行程式碼註釋部分JVM行程
- 利用Java Agent進行程式碼植入Java行程
- 基於 WebRTC 實現自定義編碼解析度傳送Web