首页 > 其他分享 >#820 B Decode String

#820 B Decode String

时间:2023-05-19 21:26:13浏览次数:47  
标签:count arr String int Decode 读入 字符串 include 820

昨天在cf上面做的一个字符串处理的题目
debug了很久终于做出来了,很开心
题目点我

下面就是代码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
	char arr[99];//第一个字符数组用来存储数字字符串
	char brr[99];//第二个数组用来存储得到的字符串
	//我这里采用的是多组输入
	int a;
	int n;
	int b;
	int c;
	scanf("%d", &n);//读取有多少个测试数据
	int count = 0;//定义一个计数器
	for (int i = 0; i < n; i++) {//循环读入数据
		count = 0;//给计数器初始化
		scanf("%d", &a);//每一组数据的长度
		getchar();//读入空格并丢掉
		gets(arr);//读入整个的字符串

		for (int i = a - 1; i >= 0;) {//倒着识别有利于字符的判断

			if (arr[i] >= '1'  && arr[i] <= '9') {
				brr[count] = arr[i] + 48;
				count++;
				i--;
				/*
				当读入的是数字1-9的时候直接转化为a-i
				他们的ascll码差48,所以加上48;
				同时让count++,记录数组长度
				然后让i--,为什么i--不写在前面的循环头部
				那是因为后面需要让i直接减3
				*/
			} else if (arr[i] == '0') {
				b = (int)arr[i - 1] - 48;
				c = (int)arr[i - 2] - 48;
				
				/*
				这里当字符为0的时候
				必须要向前读入3个字符
				b用来储存0前面的那个字符
				c用来储存0前面再向前一位的字符
				我们把储存的数字字符减去48
				这样他们就真的变成了对应的数字
				不要忘记强制类型转换
				因为后面我们要对他们做加减乘除运算
				*/
				
//				printf("%d",(c * 10 + b)+96);
//				printf("%c",(c * 10 + b)+96);



				brr[count] = (c * 10 + b) + 96;
				//对数字加上96再转为字符行就完美的转换为了小写英文字母
				count++;
				i = i - 3;
				/*
				这样填入你会发现我们会把英文倒着填入brr字符数组
				后面必须倒着遍历
				*/
			}


		}
		for (int i = count - 1; i >= 0; i--) {
			printf("%c", brr[i]);
		}
		//遍历整个数组,并且换行
		//注意这里的count要减一,因为count最后多加了一个1
		printf("\n");

	}





	return 0;
}

标签:count,arr,String,int,Decode,读入,字符串,include,820
From: https://www.cnblogs.com/harper886/p/17416317.html

相关文章

  • 《C++ string类》
    1.string类常见的构造函数1)string(constchar*s):将string对象初始化为s指向的字符串stringstr("Hello!"); 2)string(size_typen,charc):创建一个包含n个元素的string对象,其中每个元素都被初始化为字符cstringstr(10,'a'); 3)string(conststring&str)......
  • nodejs 解析php的session_decode 的module(session_decode.js)
    文件名:session_decode.js//exports.session_decode=function(){//varmessage="Hellofromtheohaitheremodule";//returnmessage;//};exports.session_decode=function(data){//*example:session_decode('firstName|s:5:&quo......
  • JSON.parse和JSON.stringify方法详解
    1.JSON.parse()用于从一个字符串中解析出json对象<!--作者:zhangfan页面名称:JSON.parse()、JSON.stringify()使用方法--><template><divid="product-list-one"><button@click="jsonParse()">执行jsonParse</button></div><......
  • qs.parse()、qs.stringify()使用方法
    1.简介qs是一个增加了一些安全性的查询字符串解析和序列化字符串的库。2.qs主要有两个方法:qs.parse()将URL解析成对象的形式<!--作者:zhangfan页面名称:qs.parse()、qs.stringify()使用方法--><template><divid="product-list-one"><button@click="qsParse()">执行q......
  • 关于Nmap扫描时报错:‘utf8’ codec can’t decode byte 0xc1 in position 0:invalid
    Nmap的官方下载地址:https://nmap.org/download.html参考文献:https://blog.csdn.net/weixin_45451139/article/details/105289026https://blog.csdn.net/qq_39855437/article/details/126541352我的用户名是中文,要改用户名。荣耀电脑改不了,而且只有这一个用户。于是我建了一......
  • testng数据驱动返回map和string两种方式
    1.yaml数据展示user.yaml#登录接口正确的用户名密码-'uri':'/console/index.html#/login''username':'liqiang1''password':'111111'#错误的接口数据-'uri':'/console/index.html#/login'......
  • SUBLEX - Lexicographical Substring Search
    来一发\(SA\)做法。题目见SUBLEX-LexicographicalSubstringSearch从P2408不同子串个数当中找到的灵感,统计不同子串个数时候,实际上是用总串数减去重复的串数。那么针对这道题,查找排名第\(k\)小的串,想想我们的后缀数组,不正是满足字典序从小到大排列?现在我们已经拥有......
  • java中String类
    java的Math和Random类文章目录java中String类String类的本质String类的常用方法String类`加号`编译器优化问题java中String类String类的本质String类是在java.lang下,经过前面的学习可以知道在这个包中的所有类可以直接调用,不需要导包。//自动装箱Stringstr="abc";"abc"就是S......
  • Java 常见日期格式,转Date和String
    1.ThuFeb01201800:00:00GMT0800(中国标准时间)转DatestartTime="ThuFeb01201800:00:00GMT0800(中国标准时间)";StringSPLIT_STRING="(中国标准时间)";startTime=startTime.split(Pattern.quote(SPLIT_STRING))[0].replace(REPLACE_STRING[0],REPLAC......
  • Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)
    参考:https://github.com/vulhub/vulhub/blob/master/weblogic/CVE-2017-10271/README.md反弹shellEXP:POST/wls-wsat/CoordinatorPortTypeHTTP/1.1Host:172.31.14.123:7001Accept-Encoding:gzip,deflateAccept:*/*Accept-Language:enUser-Agent:Mozilla/5.0(com......