LeetCodeInputHelper

Smile_slime_47

项目地址

License: MIT

概述

将力扣[…]格式的输入样例直接转换成可用的数据结构!

样例:

1
2
3
4
5
6
7
@LeetCodeData(value = "[1,null,0,0,1]", index = 0)
public class Main{
public static void main(String[] args){
LeetCodeContext lcc=new LeetCodeContext(Main.class);
TreeNode root=lcc.getBinaryTree(0);
}
}

使用方法

在测试类前加上@LeetCodeData注解,该注解包含1个参数

  • value:数据内容,支持[...]的字符串格式,此外最外层的中括号也可以去除,如@LeetCodeData(value = "1,2,3")

此外你也可以用@LeetCodeExample样例输入一整串样例,如

1
@LeetCodeExample("s=[7,8,9],b=\"abcdefg\",c=[['A','B','C'],['B','C'],['C']],d=[1,null,0,0,1]")

在main函数中创建LeetCodeContext类,并在构造参数中输入所在类的Class对象,如:

1
LeetCodeContext lcc=new LeetCodeContext(Main.class);

LeetCodeContext支持的方法:

  • int[] getIntArray(int index):按照一维int数组解析指定index的注解
  • List<Integer> getIntList(int index):按照一维int数组解析指定index的注解,并返回一个对应的ArrayList
  • int[][] getIntArrays(int index):按照二维int数组解析指定index的注解
  • char[] getCharArray(int index):按照一维char数组解析指定index的注解
  • char[][] getCharArrays(int index):按照二维char数组解析指定index的注解
  • String getString(int index):按照字符串解析指定index的注解
  • String[] getStringArray(int index):按照字符串数组解析指定index的注解
  • TreeNode getBinaryTree(int index):按照LeetCode常用的TreeNode类解析指定index的注解,并返回一个二叉树的根节点
  • ListNode getListNode(int index):按照LeetCode常用的ListNode类解析指定index的注解,并返回一个链表的根节点

对于所有get方法都有解析Example的版本:

  • T getT(int expIndex,int index):解析指定Example注解的第i项数据,同样从0开始
1
2
3
4
5
6
7
@LeetCodeExample("s=[7,8,9],b=\"abcdefg\",c=[['A','B','C'],['B','C'],['C']],d=[1,null,0,0,1]")
public class Main{
public static void main(String[] args){
LeetCodeContext lcc=new LeetCodeContext(Main.class);
TreeNode root=lcc.getBinaryTree(0,3);
}
}

当同时包含多个Data注解或者Example注解时,index按照代码顺序分配,从0开始,且二者彼此独立如:

1
2
3
4
5
@LeetCodeData("[1,null,0,0,1]")//index 0
@LeetCodeData("[1,2,3]")//index 1
...
@LeetCodeExample("s=[1,2,3],b=[4,5,6]")//expIndex 0
@LeetCodeExample("s=[7,8,9],b=\"abcdefg\",c=[['A','B','C'],['B','C'],['C']]")//expIndex 1

支持格式

一维数组

1
2
@LeetCodeData("[1,2,3]")
@LeetCodeData("['A','B','C','D']")

二维数组

1
2
@LeetCodeData("[[1,2,3],[1,2],[3]]")
@LeetCodeData("[['A','B','C'],['B','C'],['C']]")

字符串

1
@LeetCodeData("abcdefg")

字符串数组

1
@LeetCodeData("[\"tars\",\"rats\",\"arts\",\"star\"]")

LeetCode提供的二叉树和链表等

1
@LeetCodeData("[1,null,0,0,1]")

LeetCode提供的完整样例

1
@LeetCodeExample("s=[7,8,9],b=\"abcdefg\",c=[['A','B','C'],['B','C'],['C']],d=[1,null,0,0,1]")
Comments