By Long Luo
在 Leetcode 做 链表 相关的题时,给出的测试用例总是数组或者字符串形式,比如 61. 旋转链表 这道题,Testcase如下所示:
示例 1:
61. Rotate List TestCase 1
输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3]
问题
如果在本地测试代码时,每次测试代码的时候,都需要自己创建测试用例,或者调用leetcode给的例子,都需要手动去创建一个链表的话,但这样效率太低!针对这种情况,写了几个工具函数用来处理链表的代码,可供大家参考。
测试代码
个人测试链表测试代码如下:1 2 3 4 5 6 7
| public static void main(String[] args) { ListNode test1 = LinkedListUtils.constructListNode(new int[]{1, 2, 3, 4, 5}); System.out.println("[4,5,1,2,3] ?=" + LinkedListUtils.printLinkedList(rotateRight(test1, 2)));
ListNode test2 = LinkedListUtils.constructListNode(new int[]{0, 1, 2}); System.out.println("[2,0,1] ?=" + LinkedListUtils.printLinkedList(rotateRight(test2, 4))); }
|
打印链表
Leetcode上链表最后输出形式:
输出:[4,5,1,2,3]
打印方法很简单,代码如下所示:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public static String printLinkedList(ListNode head) { if (head == null) { return "[]"; } else if (head.next == null) { return "[" + head.val + "]"; }
StringBuilder sb = new StringBuilder(); sb.append("["); while (head.next != null) { sb.append(head.val); if (head != null) { sb.append(","); } head = head.next; } sb.append(head.val).append("]");
return sb.toString(); }
|