SDUT -编码

Description

给你一个由大写字母组成的组成的字符串,你可以用如下规则对其进行编码:

1、 包含K个相同字母的连续字符串可以用KX表示,其中X是相同的字母。

2、 如果K为1,不输出K

Input

 输入有多组,直到文件结束。每组一个字符串,长度为10000以内

Output

 输出编码后的字符串。

Sample

Input 

ABC
ABBCCC

Output 

ABC
A2B3C
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
#include <stdio.h>
#include <vector>

using namespace std;

/*
1.定义字符数组str[10001],定义计数变量cnt
2.while多组输入字符数组
3.遍历数组每一个元素,当前str[i]==str[i+1],那么就continue,cnt++
4.不相等,cnt大于1输出cnt,以及当前字符,否则只输出当前字符
5.边界情况:考虑到最后\0结尾,和字符串最后一个字母不同,所以可以不考虑
*/

char str[10001];
int cnt=1;
int main()
{
    while(cin>>str)
    {

        for(int i=0; str[i]!='\0'; i++)
        {
            if(str[i]==str[i+1])
            {
                cnt++;
                continue;
            }
            else
            {
                if(cnt==1)
                {
                    printf("%c",str[i]);
                    cnt=1;
                }
                else
                {
                    printf("%d%c",cnt,str[i]);
                    cnt=1;
                }
            }
        }
        puts("");
    }
    return 0;
}

Hint

Guess you like

Origin blog.csdn.net/m0_52226803/article/details/121047218