首页 > 其他分享 >西电oj73题字符串处理

西电oj73题字符串处理

时间:2023-03-03 21:15:28浏览次数:33  
标签:输出 ch 数字 西电 oj73 flag str 字符串

问题描述
有一种简单的字符串压缩算法,对于字符串中连续出现的同一个英文字符,
用该字符加上连续出现的次数来表示(连续出现次数小于3时不压缩)。
例如,字符串aaaaabbbabaaaaaaaaaaaaabbbb可压缩为a5b3aba13b4。
请设计一个程序,将采用该压缩方法得到的字符串解压缩,还原出原字符串并输出。

输入说明
输入数据为一个字符串(长度不大于50,只包含字母和数字),表示压缩后的字符串

输出说明
在一行上输出解压缩后的英文字符串(长度不超过100),最后换行。

输入样例
a5b3aba13b4

输出样例
aaaaabbbabaaaaaaaaaaaaabbbb

#include<stdio.h>
#include<stdlib.h>
int main() {
	char str[51], ch;
	int flag = 0, i, j, a, b;
	gets(str);
	for (i = 0; str[i] != 0; i++) {
		if (str[i] < 48 || str[i]>57) {
			ch = str[i];
			printf("%c", ch);  //如果不是数字就及时输出,并标记flag为0
			flag = 0;
		}
		else if (str[i] >= 48 && str[i] <= 57) {

			if (flag == 1) {    //是个两位数
				a = (int)str[i - 1] - 48; b = (int)str[i] - 48;
				for (j = 1; j <= (a * 10 + b - a); j++) {
					printf("%c", ch);
				}
			}
			if (flag == 0) {
				for (j = 1; j < (int)str[i] - 48; j++) {
					printf("%c", ch);
					
				}
				flag += 1;
			}
		}
	}

	return 0;
}

  主体思路:碰到字母就输出,并把该字母给ch,将flag标记为0

                         若碰到数字num则将flag+=1

            若第一次遇见数字,该数字为a(flag=0)将ch输出num-1次(之前在碰到字母时已经输出了一次)

         若第二次遇见数字(字母后面的是一个两位数),该数字为b(flag=1) 将ch输出(a*10+b-a)次(之前                已经 输出了a次)

 

难点:判断是不是两位数

标签:输出,ch,数字,西电,oj73,flag,str,字符串
From: https://www.cnblogs.com/LXYlxy666/p/17173546.html

相关文章

  • 外观数列(字符串)、用队列实现栈、二叉树的序列化与反序列化(树、深度优先搜索)
    外观数列(字符串)给定一个正整数n,输出外观数列的第n项。「外观数列」是一个整数序列,从数字1开始,序列中的每一项都是对前一项的描述。你可以将其视作是由递归公式定......
  • 西电oj 244题单词排序
    题目描述:定义一个二维字符数组str[10][20],行号表示单词序号,列号表示单词最大长度,输入一个正整数N(N≤10),表示单词数,使用函数wd_sort()完成单词的排序,按字母顺序从小到大排......
  • KCL 语言和 YAML 字符串的区别是什么?一文完全解答
    什么是YAMLYAML是一种数据序列化语言,通常用于编写配置文件。YAML代表另一种标记语言或YAML不是标记语言(递归首字母缩写词),YAML通常用于数据,而不是文档。YAML还是一种......
  • 字符串格式化
    字符串格式化占位符:%s一般称字符串中的%s叫占位符,而占位符被替换的过程叫字符串格式化在字符串后面紧跟%(“替换第一个%s位置”,”替换第二个%s的位置”),就会把......
  • 3.3 C提高 指针 字符串
    扩展1.指针变量和它指向的内存块是两个不同的概念指针(本身也有东西)~内容点击查看代码注意//写内存时,一定要确保内存可写 char*buf2="sadgkdsjlgjlsdk";//文......
  • 如何从字符串末尾删除子字符串?
    我有以下代码:url='abcdc.com'print(url.strip('.com'))我期望:abcdc我有:abcd现在我做url.rsplit('.com',1)有没有更好的办法?请参阅.strip/.rstrip/.l......
  • 如何用许多字符串值初始化字符串列表 (List<string>)
    如何初始化(使用C#初始化程序)字符串列表?我试过下面的例子,但它不起作用。List<string>optionList=newList<string>{"AdditionalCardPersonAddressType","A......
  • PHP 常见字符串函数
    1、字符串格式化1、trim():删除字符串两端的空格或其他预定义字符2、rtrim():删除字符串右边的空格或其他预定义字符3、ltrim():删除字符串左边的空格或其他预定义......
  • 去字符串前后空格
    //202210CJS如果不存在trim函数(部分IE),则手动追加属性if(typeofString.prototype.trim==='undefined'){String.prototype.trim=function(){......
  • json字符串转Map集合
    /***json字符串转list*@paramjsonStr*@return*/publicstaticList<Map<String,Object>>GetJsonListByString(StringjsonStr){List<Map<String,Obje......