2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 信息学奥赛一本通 1145:字符串p型编码 | OpenJudge NOI 1.7 31:字符串p型编码

信息学奥赛一本通 1145:字符串p型编码 | OpenJudge NOI 1.7 31:字符串p型编码

时间:2020-07-01 18:05:43

相关推荐

信息学奥赛一本通 1145:字符串p型编码 | OpenJudge NOI 1.7 31:字符串p型编码

【题目链接】

ybt 1145:字符串p型编码

OpenJudge NOI 1.7 31:字符串p型编码

【题目考点】

1. 字符串处理

【解题思路】

遍历字符串,设置变量curNum表示当前关注的数字字符。如果遍历到的字符与curNum相同,那么计数变量ct加1,如果不同,那么输出当前关注的数字,以及其数量,而后关注下一个数字字符,此时已经看了一个新的字符了,计数变量ct变为1。遍历时,for循环内的条件写为i<=len,那么i会一直增大到len,len为字符串长度。这样当i为len时,s[i]为’\0’,一定与字符0~9不同,那么此时就会将最后一段统计的数字及其数量输出出来。如果for循环的条件只写为i < len,那么i只遍历到len-1,那么还得在循环外面再输出最后一段统计的数字及数量。

【题解代码】

解法1:i遍历到len

#include<bits/stdc++.h>using namespace std;int main(){char s[1005], curNum;//curNum:当前数字 int ct = 0, len; cin >> s;len = strlen(s);curNum = s[0];for(int i = 0; i <= len; ++i)//当i为len时,s[i]为'\0'一定不等于字符1~9{if(s[i] == curNum)ct++;else{cout << ct << curNum;curNum = s[i];ct = 1;}}return 0; }

解法2:i遍历到len-1

#include<bits/stdc++.h>using namespace std;int main(){char s[1005], curNum;//curNum:当前数字 int ct = 0, len; cin >> s;len = strlen(s);curNum = s[0];for(int i = 0; i < len; ++i){if(s[i] == curNum)ct++;else{cout << ct << curNum;curNum = s[i];ct = 1;}}cout << ct << curNum;//输出最后一个数字的数量及是哪个数字return 0; }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。