【问题描述】在输入个数n,在输入的若干数中,找出连续n个相同的段。
【输入形式】
输入个数n
输入若干数,用逗号分割
【输出形式】
输出连续的段,如有多段,显示在不同行。
【样例输入】
3
1,2,3,3,3,4,5,5,5,6,7,8,8,8
【样例输出】
3
3,3,3
5,5,5
8,8,8
【样例输入】
5
1,1,1,1,1,2,2,2,3,3,3,4,5,5,5,5,5,5
【样例输出】
3
1,1,1,1,1
5,5,5,5,5
5,5,5,5,5
想了大半天也没想出来,求解答!
自己已经写了一大半,卡在了最后怎么分行输出相同的数。前面的过程也过于繁杂了,想看一看怎么写比较精炼。
代码如下,有帮助请点击采纳谢谢:
n = int(input())
num_list = [int(num) for num in input().split(',')]
flag = 0
count = 0
ret_list = []
for num in num_list:
if num == flag:
count += 1
if count == (n-1):
ret_list.append(','.join([str(num)] * n))
count = 0
else:
flag = num
print(len(ret_list))
for l in ret_list:
print(l)
代码如下,你试试看行不
# coding:utf8
num = eval(input('请输入个数:'))
ls = input('请输入若干数:')
ls2 = ls.split(',')
ls2 = [int(i) for i in ls2]
def justify_equal(ls):
# 判断列表中的数是否相同
if len(set(ls)) == 1:
return True
else:
return False
def get_res(ls):
res = []
if len(ls) < num:
return res
else:
for i in range(len(ls2)-num+1):
new_ls = ls2[i:i+num]
if justify_equal(new_ls):
res.append(new_ls)
return res
res = get_res(ls2)
print(len(res))
for each in res:
a = [str(i) for i in each]
print(','.join(a))