百練 / 2017電腦學科夏令營上機考試: B (字串)

來源:互聯網
上載者:User

題目來源:http://cs101.openjudge.cn/practice/12556/ 12556:編碼字串

總時間限制: 1000ms   記憶體限制: 65536kB

描述

在資料壓縮中,一個常用的方法是行程長度編碼壓縮。對於一個待壓縮的字串,我們可以依次記錄每個字元及重複的次數。例如,待壓縮的字串為"aaabbbbcbb",壓縮結果為(a,3)(b,4)(c,1)(b,2)。這種壓縮對於相鄰資料重複較多的情況有效,如果重複狀況較少,則壓縮的效率較低。

現要求根據輸入的字串,首先將字串中所有大寫字母轉化為小寫字母,然後將字串進行壓縮。

輸入

一個字串,長度大於0,且不超過1000,全部由大寫或小寫字母組成。

輸出

輸出為編碼之後的字串,形式為:(a,3)(b,4)(c,1)(d,2),即每對括弧內分別為小寫字元及重複的次數,不含任何空格。

範例輸入

aAABBbBCCCaaaaa

範例輸出

(a,3)(b,4)(c,3)(a,5)

-----------------------------------------------------

解題思路

類比題

-----------------------------------------------------

代碼

#include<iostream>#include<vector>#include<string>using namespace std;int main(){string s;cin >> s;int len = s.length(), i = 0;for (i=0; i<len; i++){if (s.at(i) >= 'A' && s.at(i) <= 'Z'){s.at(i) -= 'A' - 'a';}}int cnt = 1;char c = 0;vector<char> vecc;vector<int> veci;vecc.push_back(s.at(0));for (i=1; i<len; i++){if (s.at(i) != s.at(i-1)){vecc.push_back(s.at(i));veci.push_back(cnt);cnt = 1;}else{cnt++;}}veci.push_back(cnt);for (i=0; i<vecc.size(); i++){cout << "(" << vecc.at(i) << "," << veci.at(i) << ")" ;}}


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.