当前位置: 首页 > 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;
}

相关文章:

  • 开源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 进程池的基本使用
  • 外贸公司网站/网站域名查询官网
  • 不良网站正能量进入窗口/百度开户怎么开
  • 拆分网站开发/怎么弄一个网站
  • 评估政府网站建设成效的指标/seo怎么做优化排名
  • 公司网页网站建设/关键词seo资源
  • 建站abc怎么改代码/免费ip地址网站