牛客网输入处理

    技术2022-07-10  161

    牛客网

    相信在牛客网上做题、笔试的同学,遇到一个比较大的问题就是如何处理输入输出。

    例如,输入为

    [[1,2],[3,4],[5,6]]

    将此字符串转为整数数组:

    public static int[] stringToArrays(String str){ str = str.replaceAll("\\D"," ").trim(); //trim()方法去除字符串首尾的空字符 //str = str.replaceAll("[^0-9]"," ").trim(); String[] strings = str.split("\\s+"); //按一个或多个空字符切分字符串 int[] nums = new int[strings.length]; for (int i = 0; i < strings.length; i++){ nums[i] = Integer.parseInt(strings[i]); } return nums; }

    正则表达式

    [] 代表匹配中括号中其中任一个字符。如:

    Strign str = "[abc]"; //匹配a或b或c中的任意一个字符

    配合 - 使用:

    Strign str = "[a-z]" ; //匹配从a到z的任意一个字符

    ^ 在开头则表示匹配字符串开始位置,例如:

    String str = "abc"; String regix = "^a[a-z]*"; System.out.println(Pattern.matches(regix, str)); //输出为true

    ^ 在 [] 里面则表示“非”,例如

    String str = "[^0-9]"; //匹配非数字的字符

    对应的,匹配以某个字符结尾的字符串以==$== ,例如:

    String str = "abc"; String regix = "^a[a-z]c$"; //以a开头,中间字符为a到z中的任意一个,结尾为c的字符串 System.out.println(Pattern.matches(regix, str)); //输出为true

    . 表示任意字符。

    ? 表示出现0或1次。

    + 表示出现1次或多次。

    * 表示出现任意次数(0次,1次,多次)。

    {n} 表示出现n次。

    {n,m} 表示出现n~m次。

    {n,} 表示n次或n次以上。

    | 表示或的意思,例如: A|B,匹配A或B。

    下面的匹配规则在java使用的过程中,需要多加一个转移字符\:

    \d 表示匹配数字。\D 表示匹配非数字。\s 表示匹配由空字符组成的字符串(一个或多个" ")。\S 表示由非空字符组成的字符串,相当于[^\s]。\w 表示匹配字母、数字、下划线,相当于[a-zA-Z0-9_]。\W 表示匹配不是由字母、数字、下划线组成的字符。
    Processed: 0.013, SQL: 9