#总是感觉自己写的很复杂,会有更精简的解法 #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)+'}')