[C语言]压缩字符串并添加标记字符

27 篇文章 6 订阅

[C语言]压缩字符串并添加标记字符

1、题目

小科最近在研究字符串压缩标记问题,他想在给定的字符串的指定字符前面插入标记字符,若指定字符连续出现则需要把连续的字符压缩为1个字符加出现的次数,指定字符和标记字符均从键盘输入。请你帮他解决这个需求吧。

【输入形式】输入主串 s(长度小于100),输入指定字符 t,输入标记字符 c。

【输出形式】输出插入后字符串

样例1:

输入:
abbcabcde
b
*
输出:
a* b2ca* bcde

样例2:

输入:
abbcbbbe
b
c
输出:
acb2ccb3e

2、完整代码

#define _CRT_SECURE_NO_WARNINGS  // Visual Studio版本太新需加上
#include <stdio.h>
#define N 100
char res[N];

// 压缩字符串
int Compress(char* arr)
{
	int i = 0;
	int j = 0;
	int cout = 1;
	while (arr[i] != '\0')
	{
		if (arr[i] == arr[i + 1])
		{
			cout++;
		}
		else
		{
			if (cout == 1) {
				arr[j++] = arr[i];
			}
			else if (cout != 1) {
				arr[j++] = arr[i];
				arr[j++] = cout + '0';
			}
			cout = 1;
		}
		i++;
	}
	arr[j] = '\0';
}

//添加标记字符
char* InsertStr(char* s, char t, char c)
{
	int length = strlen(s);
	int i = 0;
	int count = 0;
	while (i < length)
	{

		if (s[i] == t)
		{
			res[count++] = c;
		}
		res[count++] = s[i];
		i++;
	}
	if (s[length - 1] == t) {
		res[count++] = c;
	}
	res[count] = '\0';
	return res;
}

int main()
{
	char a[100], b, c;
	gets(a);
	Compress(a);
	b = getchar();
	scanf("\n");
	c = getchar();
	char* p = InsertStr(a, b, c);
	puts(p);
	return 0;
}

3、截图

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跳舞的皮埃尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值