给定一个字符串,请你将字符串重新编码,将连续的字符替换成“连续出现的个数+字符”。比如字符串AAAABCCDAA会被编码成4A1B2C1D2A。
输入描述:
每个测试输入包含1个测试用例
每个测试用例输入只有一行字符串,字符串只包括大写英文字母,长度不超过10000。
输出描述:
输出编码后的字符串
输入例子1:
AAAABCCDAA
输出例子1:
4A1B2C1D2A
#include "pch.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;//定义输入的字符串
int i;//全局变量i为了后面在外部访问到i
cin >> s;
int number = 1;//定义一个计数器
for ( i = 1; i < s.size(); i++)//遍历数组
{
if (s[i - 1] == s[i]) //判断当前字符和上一个字符是否相等
{
number++;//相等计数器加1
}else
{
cout << number << s[i - 1]; //否则就输出之前的字符
number = 1;//计数器重新置为1
}
}
cout << number << s[i - 1]<<endl;
//这行的作用是当遍历到最后一个字符时,无论该字符是否与上一个字符相等,
//在循环体中都没有输出该字符,所以需要单独输出该字符(注意是是s[i-1],因为循环体判断终止时为多加了1)
}