第12讲. 边界问题(分块收集处理)
例 1. 一段文本中包含多个非 0 整数(整数之间由一些非数字符号分隔),请统计整数的个数,并计算所有整数之和。程序及测试情况如下,请回答后面问题。
样例 输入:120nn 67,t20,yw50,,g60 输出:5 317
s = input() + ','
sum, cnt = 0, 0
dt = 0 # 躯干初始化
for e in s:
if '0' <= e <= '9':
dt = dt * 10 + int(e)
else:
if dt>0 :
sum += dt; cnt += 1
dt = 0
if dt > 0: sum += dt; cnt += 1
print(cnt, sum)
3. 无直接分隔,通过状态变化做分隔。如最长递增序列等
例 2. RLE 压缩算法是 Windows 系统中使用的一种图像文件压缩方法,用两个数据表示,第一个记录指定像素重复的次数;第二个记录具体像素的值。例如,有一表示颜色像素值的字符串 RRRRGGBBB,用 RLE 压缩方法压缩后可用 4R2G3B 表示。程序及测试情况如下,请回答后面问题
样例 输入:RRRRGGBBB 输出:4R2G3B
s1 = "RRRGBBB"
s2 = ''; ch = s1[0]; cnt = 1
for e in s1[1:]:
if ch == e:
cnt += 1
else:
s2 += str(cnt) + ch
ch = e #①
cnt = 1
print(s2 + str(cnt) + ch )
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com