C语言蓝桥杯-解码-创新互联

目录

创新互联公司从2013年开始,是专业互联网技术服务公司,拥有项目成都网站设计、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元如东做网站,已为上家服务,为如东各地企业和个人服务,联系电话:13518219792
  1. 题目描述

  1. 输入、输出格式

  1. 输入、输出样式

  1. 说明/提示

  1. 做题思路

  1. 代码


  1. 解码题目描述

小明有一串很长的英文字母,可能包含大写和小写。

在这串字母中,有很多连续的是重复的。小明想了一个办法将这串字母表达得更短:将连续的几个相同字母写成字母 + 出现次数的形式。 例如,连续的 5 个 a,即 aaaaa,小明可以简写成 a5(也可能简写成 a4a、aa3a 等)。

对于这个例子:HHHellllloo,小明可以简写成 H3el5o2。为了方便表达,小明不会将连续的超过9个相同的字符写成简写的形式。

现在给出简写后的字符串,请帮助小明还原成原来的串。


  1. 输入、输出格式

输入格式

输入一行包含一个字符串。

输出格式

输出一个字符串,表示还原后的串。


  1. 输入、输出样式

输入 #1

H3el5o2

输出 #1

HHHellllloo


  1. 说明/提示


对于所有评测用例,字符串由大小写英文字母和数字组成,长度不超过 100100。请注意原来的串长度可能超过 100100。

蓝桥杯 2020 第一轮省赛 A 组 F 题(B 组 G 题)。


5做题思路

5.1数据存放

本题目在输入格式中就提到"字符串",加上需要既输入字母又输入数字,所以得出我们需要使用一个字符型数组来存放字符串

在创建字符型数组的时候,发现说明,测试用例的字符串长度不超过100,而原字符串长度可能超过100,加上题目描述,小明不会将连续的超过9个相同的字符写成简写的形式。

这里,我们以最坏的情况来考虑,假设小明给了100个字符串长度,每个字母都是9,那么,真实字符串的大小可能是50*9,也就是450为数组的最小 大小。也就是如下代码

这样,我们就可以完美储存原字符串了。

值得注意的是,这道题目有两种储存数据的方法:一种是在原数组里储存、打印;另一种是将输入的字符串扩展成原字符串到另一个数组。这里我用的是第一个方法。


5.2 数据判断

仔细观察,发现输入样例有H3el5,所以在读取数据时需要讨论前后两个数据都是字母的情况


5.3主要思路

基本思路:有序数组在内存中是连续存放的

核心思路:数据是字母+数字在内存中连续存放,其中,数字为1会省略

这样,我们就可以使用两个指针来指向这个数组,一个指针指向字母,另一个指针指向数字,然后根据指向数字的指针得出循环次数,将字母循环打印即可,如果两个都是字母,则打印前一个指针的字母一次,然后++。

这里就是直观的图像

然后开始代码

由于我们scanf的输入格式是%s,所以输入的数字会被转化成字符数字,在循环时需要减去'0'才能得到对应的数字,打印完成后指针会指向后两个元素,进而继续判断


6.代码

#includeint main()
{
    char arr[450] = { 0 };
    scanf("%s", arr);
    int situ = 0;
    int news = 1;
    while (arr[situ] != 0)
    {
        if (arr[news] >= '0' && arr[news]<= '9')
        {
            int tmp = arr[news] - '0';
            while (tmp--)
            {
                printf("%c", arr[situ]);
            }
            situ += 2;
            news += 2;
        }
        else//字母
        {
            printf("%c", arr[situ]);
            situ += 1;
            news += 1;
        }
    }
    return 0;
}

ps:这是萌新的第一篇博客,希望大家喜欢,有什么需要改进的地方大家可以提出来,以后会不定期更新一些蓝桥杯的博客的

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文题目:C语言蓝桥杯-解码-创新互联
文章出自:http://ybzwz.com/article/hsids.html