1. 程式人生 > >給定一個僅包含'A'-'Z'的字串,表示成'kX'形式輸出

給定一個僅包含'A'-'Z'的字串,表示成'kX'形式輸出

問題描述:

給定一個僅包含’A’-’Z’的字串,用下面的方法進行編碼:
(1)每個包含k個相同字元的子串要表示成”kX”,其中X是由唯一字元組成的子串。(2)如果某個子串的長度為1,則1忽略不寫。
輸入:第1行輸入一個整數N(1<=N<=100) ,代表要處理的字串的個數。接下來的N行就分別輸入一個只包含’A’-’Z’的字串,每個字串的長度小於10000.
輸出:對於每個字串,在單獨的一行上輸出該字串編碼轉換後的內容。

問題求解:

#include<iostream>
#include<vector>
#include <sstream>
using
namespace std; void str_code(string s) {//'AABBBCCCCCCC' int len = s.size(); vector<int> cnt(26,0); string res = ""; for(int i=0;i<len;i++) {//每個字母計數 cnt[s[i]-'A']++; } for(int i=0;i<26;i++) { //(1)如果出現一次,則之間將字母加入到res if(cnt[i]==1) res += 'A'+i; //(2)如果出現多次,則將出現次數和對應字母加入到res
if(cnt[i]>1) { //1)將整型數轉換為字元數 stringstream ss; ss<<cnt[i]; string tmp = ""; tmp = 'A'+i;//2)'A'加上偏移量即可轉化為相應字元!!! res += ss.str() + tmp; } } cout<<res<<endl; } int main() { //string s = "AABBBCCCCCCC";
string s; int n; cin>>n; while(n--) { cin>>s; str_code(s); } return 0; }

相關推薦

給定一個包含'A'-'Z'的字串,表示'kX'形式輸出

問題描述: 給定一個僅包含’A’-’Z’的字串,用下面的方法進行編碼: (1)每個包含k個相同字元的子串要表示成”kX”,其中X是由唯一字元組成的子串。(2)如果某個子串的長度為1,則1忽略不寫。

給定一個包含大小寫和空格‘ ’的字串,返回其最後一個單詞的長度

#include<stdio.h> #include<string.h> int main() { char a[80]; int j,k,l=0; gets(a); j=strlen(a); for(k=j-1;k>=0;k--) { if(a[k]

LeetCode58 給定一個包含大小寫字母和空格 ' ' 的字串,返回其最後一個單詞的長度。 如果不存在最後一個單詞,請返回 0 。 說明:一個單詞是指由字母組成,但不包含任何空格的字串

給定一個僅包含大小寫字母和空格 ’ ’ 的字串,返回其最後一個單詞的長度。 如果不存在最後一個單詞,請返回 0 。 說明:一個單詞是指由字母組成,但不包含任何空格的字串。 class Solution { public: int lengthO

給定一個包含小寫字母的字串,刪除重複的字母,每個字母只出現一次。在所有結果中,輸出字典順序最小的。

本題源自leetcode 316 --------------------------------------------------------------------------------- 思路:1 用倆個vector 標記字元在串中的出現的次數,以及這個字元是否訪

給定一個包含正整數的非空陣列,返回該陣列中重複次數最多的前N個數字 ,返回的結果按重複次數從多到少降序排列(N不存在取值非法的情況)

1 """ 2 #給定一個只包含正整數的非空陣列,返回該陣列中重複次數最多的前N個數字 3 #返回的結果按重複次數從多到少降序排列(N不存在取值非法的情況) 4 解題思路: 5 1.設定一個空字典,去儲存列表中的值和值出現的次數 6 2.使用L.count()方法可以統計出L中值出現的次數

python 從鍵盤輸入一個字串,將小寫字母全部轉換大寫字母,將字串以列表的形式輸出(如果字串包含整數取整型)?

str1 = input("請輸入任意字串: ") list1= [] #儲存字串 list2= [] #儲存數字 for i in str1: if i.isdigit() == True: #判斷當前字元是否為字元 list2.append(int(i)) else:

一個包含a包含b 的sql 語句

/* 一個查詢包含的sql 語句 條件:任意一個id,例:id=1 需求:得到name值包含條件id的name的id 例:既包含a又包含b的id 思路:一開始想著用 join 或者 exists 來解決,費勁不少,解決了

給定一個長度不限的字串,請找出該字串中出現次數最多的那個字元,並打印出該字元及出現次數(C/C++版)

#include<iostream> using namespace std; /** * @brief findchar 給定一個長度不限的字串,請找出該字串中出現次數最多的那個字元,並打印出該字元及出現次數; 如果多個字元的出現次數相同,只打印首個

將10進位制數字轉化為26進位制用A-Z表示

最近在封裝Excel元件,需要提供兩個介面,分別根據單元索引和單元名稱訪問單元格。例如,GetCell(1, 2)和GetCell(“A2”),這兩種方法返回的結果是相同的。這裡遇到一個問題,如何在單元索引([1,2])和單元名稱(A2)之間相互轉換? 由於在單元索引和單元

給定一個由數字組成的字串,如:"12395868392",統計出每個數字出現的次數

public class ApperaNum { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("輸入

給定一個羅馬數字 ss,將羅馬數字轉換整數。

給定一個羅馬數字 s,將羅馬數字轉換成整數。 如羅馬數字I,II,III,IV,V分別代表數字 1, 2, 3, 4, 5。 首先要來了解一下羅馬數字表示法,基本字元有 7 個:I、V、X、L、C、D、M,分別表示1、5、10、50、100、500、1000。 在構成數字的時

給定一個整數 numnum,將整數轉換羅馬數字。

給定一個整數 numnum,將整數轉換成羅馬數字。 如1,2,3,4,5 對應的羅馬數字分別為I,II,III,IV,V等,更詳細的說明見此 連結。 輸入格式 第一行輸入一個整數num(1≤num≤3999)。 輸出格式 輸出 num 對應的羅馬數字。 樣例輸入

哥德巴赫猜想:任何一個>=4之偶數,都可以表示兩個奇質數之和.

任何一個>=4之偶數,都可以表示成兩個奇質數之和. 分析思路: 1.給定一個範圍,找出這個範圍裡面的所有質數(用空間換時間,效能提高),將其儲存到一個數組中 2.使用迴圈,將這個範圍 和 質數陣列 傳入 一個方法,判斷是否成立。找出所有大於4的偶數

java將包含unicode的字串轉換中文

如題  將 \u5168\u7ad9\u63a5\u53e3\u5df2\u5347\u7ea7\u4e3a\u5206\u9875\u6a21\u5f0f\uff0c\u6bcf\u9875200

一個字符(char)或者一個整形(int)的二進制形式輸出

正序 inpu %d arr pre return char NPU 余數 要輸出一個數的二進制形式使用位操作 >> 和 & void putBinary(int number)//將一個int整形數字的二進制形式正序,倒序輸出 { int

輸入一個8位二進位制數,轉換十進位制數輸出

#include<iostream> using namespace std; int  power(int x, int y) {int val=1;while (y--){val *=

C語言K&R習題系列——統計文件中每個單詞所包含的字母個數,以直方圖形式輸出

原題: Write a program to print a histogram of the lengths of words in its input. It is easy to draw

請實現一個函式用來匹配包括'.'和'*'的正則表示式。模式中的字元'.'表示任意一個字元,而'*'表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。

題目描述 請實現一個函式用來匹配包括'.'和'*'的正則表示式。模式中的字元'.'表示任意一個字元,而'*'表示它前面的字元可以出現任意次(包含0次)。 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串"aaa"與模式"a.a"和"ab*ac*a"匹配,但是與"aa.a"和"ab*a"均