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;
}
相關文章
- 32:行程長度編碼行程
- 影像壓縮編碼碼matlab實現——行程編碼Matlab行程
- Base58編碼的長度是如何計算的?
- 擷取指定長度字串長度程式碼例項字串
- 如何理解用資訊熵來表示最短的平均編碼長度熵
- 擷取 UTF8 編碼字串從首位元組開始指定寬度 (非長度)字串
- 原始碼編譯構建JSVC執行程式原始碼編譯JS行程
- 網上搜集的線上編輯執行程式碼行程
- 程式碼縮寫和長度值
- 編寫一個程式求輸入字串的長度字串
- 《第一行程式碼——Android》編輯的話行程Android
- 程式碼行數能衡量編碼進度嗎?
- eas_批次更新組織長編碼,長名稱
- 設定Vim編輯器裡Tab的長度,行號
- 僅一行程式碼,打造一個線上編輯器行程
- javascript計算字串長度程式碼例項JavaScript字串
- 限定文字框輸入字串長度程式碼字串
- Java/Android 編碼規範,從第一行程式碼開始JavaAndroid行程
- 學習編碼需要多長時間?
- 格式化MyEclipse程式碼(java、jsp、js)行的長度@修改java程式碼字型@修改Properties檔案編碼方式EclipseJavaJS
- 配置Vim編輯器設定Tab鍵的格數(長度)
- 一行程式碼,瀏覽器變臨時編輯器行程瀏覽器
- 【編測編學】零基礎學python_08_列表(排序+反轉+長度)Python排序
- Laravel-生成唯一固定長度邀請碼Laravel
- 取字串長度字串
- php三行程式碼解決輸入地址給出經緯度PHP行程
- 為什麼編碼規範裡要求每行程式碼不超過80個字元行程字元
- 100行程式碼,輕鬆搞定文字編輯器中草稿箱行程
- vue3 模板編譯 —— 30 行程式碼實現 .sync 修飾符Vue編譯行程
- js實現的擷取指定長度字串程式碼JS字串
- js檢測漢字的長度程式碼例項JS
- jQuery實現的擷取指定長度字串程式碼jQuery字串
- 根據字元型別和密碼長度隨機生成密碼字元型別密碼隨機
- 還在拼冗長的WhereIf嗎?100行程式碼解放這個操作行程
- Mysql設定字元編碼及varchar寬度問題MySql字元
- 正規表示式驗證密碼格式和長度程式碼例項密碼
- linux自動修改密碼長度和有效期的指令碼Linux密碼指令碼
- vscode怎麼執行程式碼HTML 怎麼在vscode編寫HTML程式碼VSCode行程HTML