#总是感觉自己写的很复杂,会有更精简的解法
#lt总列表, l是临时列表,i是临时计数器
#i从1开始计数,计数到k或者链表遍历结束跳出内循环,如果i>k则证明节点数到了k为一组,将列表反转,否则剩下就是无法满足k个一组,保持原样,将临时列表添加到总列表
#根据lt总列表,构建链表ph
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @param k int整型
# @return ListNode类
#
class Solution:
def reverseKGroup(self , head: ListNode, k: int) -> ListNode:
# write code here
if not head:
return head
p = head
lt = []
while p:
l = []
i = 1
while i<=k and p:
l.append(p.val)
p = p.next
i+=1
if i>k:
l.reverse()
lt.extend(l)
ph = ListNode(lt[0])
pp= ph
for i in range(1, len(lt)):
tmp = ListNode(lt[i])
pp.next = tmp
pp= pp.next
return ph
#################怎么全都是这个写法???
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
# @param head ListNode类
# @param k int整型
# @return ListNode类
for z in range(20):
s = input()
arr = s.lstrip('{').split('},') #用于截掉字符串左边的空格或指定字符
k = int(arr[1])
arr_num = arr[0].split(',')
arr_re = []
i = 0
while True:
if i+k-1 >= len(arr_num): #不是k的倍数,将最后剩下的节点保持原样,或最后剩余的节点
for n in range(i, len(arr_num)):
arr_re.append(arr_num[n]) #不倒转
break;
else:
for j in range(k):
arr_re.append(arr_num[i+k-1-j]) #索引从0开始,减1
i += k
print('{'+','.join(arr_re)+'}')