字母简化(UPC练习)

题目描述

给出一串全部为小写英文字母的字符串,要求把这串字母简化。简化规则是:统计连续出现的字母数,输出时先输出个数,再输出字母。比如:aaabbbaa,则简化为3a3b2a;而zzzzeeeeea,则简化为4z5e1a。

输入

有多行。第一行为一个整数n,表示共有n组测试数据(1≤n≤100)。接下来有n行,每行第一个数为字符串长度t(t≤1000),然后为一个长度为t的字符串。

输出

简化后的字符串,每组测试用例占一行。

样例输入 Copy

3

7 aaaaaaa

4 abcd

6 qwweee

样例输出 Copy

7a

1a1b1c1d

1q2w3e

代码实现及解释:

#pragma GCC optimize(2)  //氧气优化,启动!
#include //万能头文件
using namespace std;
int main()
{
    /*ios::sync_with_stdio;//关闭同步,避免TLE(加不加都行)
    cin.tie(0);  
    cout.tie(0);*/
    int n;     //n个字符串
    int i,j;   //定义嵌套循环两个变量
    int t;     //长度
    int m;     //某种字母出现了m次
    char s[1001],ch;
    cin>>n;     
    for(i=0;i<=n;i++)
    {
        cin>>t;
        cin>>s;
        ch=s[0];//特定字母,等与字符串第一位
        m=1;    //起始每个字母都是出现一次
        for(j=0;j         {
            if(s[j+1]==ch) //如果字符串后一个字母等于特定字母
            {
                m++;    //系数++
            }
            else     //不等于
            {
                cout<                 ch=s[j+1];  //改变特定字母
                m=1;   //初始化下一个字母之前的系数
            }
        }    
        cout<<"\n";  //注意换行符位置            
    }
    return 0;
}

夹带私货哈哈哈(今天青岛栈桥的日出)

字母简化(UPC练习)_第1张图片

 

 

你可能感兴趣的:(c++,算法)