当前位置: 首页 > news >正文

ZT9 游游的字母翻倍

描述

游游拿到了一个长度为n的字符串,她每次操作会选择一个区间[l,r],将第l个字母到第r个字母各重复一次,插入到该字母的后面。

例如,对于字符串"abcd",若选择区间[2,3]进行操作,字符串将变成"abbccd"

游游将进行q次操作。她想知道,q次操作结束后,最终的字符串是什么样子?

输入描述:

第一行输入两个正整数n和q,分别代表字符串长度和操作次数。
第二行输入一个仅由小写英文字母组成的字符串,代表初始的字符串。
接下来的q行,每行输入两个正整数l,r,代表操作的区间。
1≤n≤1000
1≤q≤10
1≤l≤r≤10^6
保证每次操作时,r不大于当前的字符串长度。

输出描述:

一个字符串,代表所有操作结束后形成的字符串。

示例1

输入:

6 2
abcdef
2 4
3 6

输出:

abbbccccdddef

说明:

 
 

第一次操作后,字符串变成abbccddef

第二次操作后,字符串变成abbbccccdddef

一、问题分析

首先读题,仔细看描述中的内容,发现需求是

1.给定一个字符串,将指定区间的字母翻倍

2.翻倍的方法是,在在每个字母后面插入一个相同的字母

二、解题思路

1.首先定义长度n,操作次数q,读取数据

2.然后定义两个整数l和r用于读取区间

3.定义一个字符串answer,为其分配足够的内存空间

4.空间是原字符串长度+(r  -  l + 1)

三、具体步骤

使用的语言是C

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main() {
    int n, q;
    while (scanf("%d %d", &n, &q) != EOF) {
        char *str = (char*)malloc(sizeof(char) * (n + 1));
        if(str == NULL) {
            printf("内存分配失败");
            return 0;
        }
        scanf("%s",str);
        str[n] = '\0';
        int l, r;
        for(int i = 0; i < q; i++) {
            scanf("%d %d", &l, &r);
            int len = strlen(str);
            char* tmp = (char*)malloc(sizeof(char) * (len + r - l + 1));
            for(int j = 0; j < l - 1; j++) {
                tmp[j] = str[j];
            }
            int index = l - 1;
            for(int j = l - 1; j < r; j++) {
                tmp[index] = str[j];
                index++;
                tmp[index] = str[j];
                index++;
            }
            for(int j = r; j < len; j++) {
                tmp[index] = str[j];
                index++;
            }
            tmp[index] = '\0';
            str = tmp;
        }
        printf("%s\n",str);
    }
    return 0;
}


文章转载自:
http://bolar.dxwdwl.cn
http://childmind.dxwdwl.cn
http://allergen.dxwdwl.cn
http://bannister.dxwdwl.cn
http://bowsman.dxwdwl.cn
http://caseinogen.dxwdwl.cn
http://carve.dxwdwl.cn
http://aldan.dxwdwl.cn
http://astromancy.dxwdwl.cn
http://cellulase.dxwdwl.cn
http://britain.dxwdwl.cn
http://amberfish.dxwdwl.cn
http://beneficiary.dxwdwl.cn
http://antifertilizin.dxwdwl.cn
http://aeronef.dxwdwl.cn
http://audit.dxwdwl.cn
http://atmolysis.dxwdwl.cn
http://bouncy.dxwdwl.cn
http://appraisable.dxwdwl.cn
http://biangular.dxwdwl.cn
http://abba.dxwdwl.cn
http://cattleya.dxwdwl.cn
http://chlorinous.dxwdwl.cn
http://bachian.dxwdwl.cn
http://azoturia.dxwdwl.cn
http://banshie.dxwdwl.cn
http://bowing.dxwdwl.cn
http://anticaries.dxwdwl.cn
http://ailurophile.dxwdwl.cn
http://asseveration.dxwdwl.cn
http://www.dtcms.com/a/34646.html

相关文章:

  • 开源AI网络爬虫工具Crawl4AI
  • vue3学习--Vue3与2的区别
  • 分布式服务配置中心
  • STM32-智能台灯项目
  • 游戏开发 游戏开始界面
  • 美颜相机1.0
  • 神经网络八股(1)
  • Docker 镜像加速:告别龟速,畅享飞速下载!
  • discuz3.5 回复 浮动窗口无法弹出
  • JS复习练习题目、完整nodejs项目以及Commons、Es
  • UE_C++ —— Gameplay Tags
  • java八股文-消息队列
  • 特好用的文字识别库---paddleocr
  • Qt | Excel创建、打开、读写、另存和关闭
  • dockerfile基于alpine构建haproxy
  • 常见的服务CPU过高Arthas快速排查问题详细笔记
  • DeepSeek + Ollama 部署自己本地的 AI 大模型(Windows,AMD 显卡也能用)
  • Linux虚拟机的三种网络连接方式
  • Spring Cloud工程搭建
  • python 进程池的基本使用
  • 【落羽的落羽 数据结构篇】顺序结构的二叉树——堆
  • 重学SpringBoot3-Spring WebFlux之SSE服务器发送事件
  • 图神经网络
  • 宝塔Linux面板配置环境 + 创建站点
  • 时间转换(acwing)c/c++/java/python
  • 【代码软件 | vs2019】vs2019+Qt5.12.12开发环境 的下载、安装详细介绍
  • 《解锁AI密码,机器人精准感知环境不再是梦!》
  • Linux 命令大全完整版(04)
  • 嵌入式八股文(五)硬件电路篇
  • 从零实现机器人自主避障