https://stepik.org/lesson/Base-RLE-encode-21299/step/2?adaptive=true&unit=5100
该算法的输入是包含拉丁字母字符的字符串。该字符串被分成几组连续的相同字符(“系列”)。每个系列都以重复符号和重复次数为特征。写入代码的正是这些信息:首先写入一系列重复字符的长度,然后写入字符本身。对于长度为一个符号的系列,将省略重复次数。
例如,考虑这条线
aaabccccCCaB
把它分解成系列
aaa b cccc CC a B
之后,我们对系列进行编码并得到最终的字符串,我们将考虑算法的结果。
3ab4c2CaB
输入格式:一行包含拉丁字母的任意字符。
输出格式:包含编码序列的字符串。
示例输入 1:aaabccccCCaB 示例输出 1:3ab4c2CaB
这是一个这样的任务。现在代码处于糟糕的状态,因为我无法理解错误是什么。我已经以最平庸的方式明确指出了输入行的长度并删除了单位。
vvod = 'aaabccccCCaB' #input()
if len(vvod) > 1:
count = 1
prev = ''
lst = []
for i in vvod:
if i != prev:
if prev:
entry = ''
entry = str(count) + prev
lst.append(entry)
count = 1
prev = i
else:
count += 1
else:
entry = str(count) + i
lst.append(entry)
edinici = ''.join(lst)
x = ''
for i in edinici:
if i != '1':
x = x + i
print(x)
else:
print(vvod)
我恳请你帮忙解决这个问题,也许我会寻找另一本问题书。
没有通过现场测试。没有明确的解释,产生错误的答案。解释器正确显示所有内容 - 我从任务中输入了示例输入并自己编写了任意行。
Failed test #6. Wrong answer
itertools.groupby()
对于这样的任务,使用将相邻相同元素分组的函数会很方便:例子:
要查找代码中的错误,请编写显式测试并简化它:
您可以遍历所有可能的字符串,直到一定长度且不超过指定的字母:
在哪里: