m0_57934880 2021-05-16 19:31 采纳率: 100%
浏览 126
已采纳

求oj代码:C语言字符串的问题(代码通过即采纳)

Problem 编程实现对一个只包含大写字母的字符串进行压缩和解压缩。 压缩规则是:假设某连续出现的同一字母的数量为n,则其在压缩字符串中为字母n。若n=1,则n必须省略,例如,AAAABCCCCCDDDD压缩为A4BC5D4。 解压缩规则是将压缩字符串还原,例如,A4BC5D4解压为AAAABCCCCCDDDD。 输入、处理结果中的每个字符串的长度都不会超过99。 字符串库函数可用列表: strlen() 注意:禁用STL。 input: 第一行:数字1或者2,前者代表进行压缩,后者代表进行解压。 第二行:一个符合对应要求的字符串。 output: 处理后的结果。 Samples: input: 1 AAAABCCCCCDDDD output: A4BC5D4 input: 2 A4BC5D4 output: AAAABCCCCCDDDD

  • 写回答

3条回答 默认 最新

  • 白驹_过隙 算法领域新星创作者 2021-05-16 21:12
    关注
    #include<stdio.h>
    #include <cstring>
    #define LENGTH 2000
    char a[LENGTH];
    void compress_string() {
    	int i,n=1,l,j;
        l=strlen(a);
        for(i=0;i<l;i++){
            if(a[i]==a[i+1]){
                n++;
                //printf("%d\n", i);
            }
            else{
                if(n>1)
                    printf("%c%d", a[i],n);
                else
                    printf("%c", a[i]);
                //printf("%d\n", i);
                n=1;
            }
    	}
    }
    void jieya_string() {
        int i,n,l,j;
        l=strlen(a);
        for(i=0;i<l;i++){
            if(a[i]>='0'&&a[i]<='9'){
                n=a[i]-'0';
                for(j=0;j<n-1;j++){
                    printf("%c", a[i-1]);
                }
            }
            else
                printf("%c", a[i]);
    	}
    }
    int main(void) {
    	int i,t=0;
        scanf("%d", &t);
    	scanf("%s", a);
    	
    	if(t==2)
            jieya_string();
        else
            compress_string();
    	return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 准备学习小程序搭建,谁能手把手的教我啊?
  • ¥15 关于#嵌入式硬件#的问题:树莓派第一天重装配置python和opencv后第二天打开就成这样,瞎捣鼓搞出来文件夹还是没把原来的界面调回来
  • ¥20 Arduino 循迹小车程序电路出错故障求解
  • ¥20 Arduino 循迹小车程序电路出错故障求解
  • ¥100 AT89C52单片机C语言调试之后再回答
  • ¥15 AT89C52单片机C语言串口助手发送数据包返回值
  • ¥15 C++数组中找第二小的数字程序纠错
  • ¥15 wannier复现图像时berry曲率极值点与高对称点严重偏移
  • ¥15 利用决策森林为什么会出现这样·的问题(关键词-情感分析)
  • ¥15 DispatcherServlet.noHandlerFound No mapping found for HTTP request with URI[/untitled30_war_e