题目描述
给出一串全部为小写英文字母的字符串,要求把这串字母简化。简化规则是:统计连续出现的字母数,输出时先输出个数,再输出字母。比如: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 <bits/stdc++.h> //万能头文件
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<t;j++)
{
if(s[j+1]==ch) //如果字符串后一个字母等于特定字母
{
m++; //系数++
}
else //不等于
{
cout<<m<<ch; //输出次数,字母
ch=s[j+1]; //改变特定字母
m=1; //初始化下一个字母之前的系数
}
}
cout<<"\n"; //注意换行符位置
}
return 0;
}
夹带私货哈哈哈(今天青岛栈桥的日出)