牛客编程tips(数组、列表、字符串)

牛客编程tips(数组、列表、字符串)

一、输入输出一般技巧

1、解决多行的输入输出

描述

image-20200728124344622

image-20200728124352851

Java代码

public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int[][] arr = new int[n][m];
        for(int i=0;i<n;i++){
            for(int j = 0;j<m;j++){
                arr[i][j] = sc.nextInt();
            }
        }
        //System.out.println(minPathSum(arr));

二、数组/集合一般技巧

2、获取数组任意子串

//2 获取数组任意子串
        //2.1 任意指定位置
        int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8};
        int[] subarr = Arrays.copyOfRange(arr1,0,3);  //[0,3)
        System.out.println(Arrays.toString(subarr));   //[1,2,3]

        //2.2 指定从头获取出n个元素
        int[] subarr2 = Arrays.copyOf(arr1,4);
        System.out.println(Arrays.toString(subarr2));   //[1,2,3,4] 从数组头复制出4个元素

3、String数组转List

String[] strings = {"1", "2", "3"};
List<String> strings1 = Arrays.asList(strings);

4、int数组转List

//方法1:
        int[] arr4 = {1, 2, 3, 4, 5, 6, 7};
        List<Integer> collect = Arrays.stream(arr4).boxed().collect(Collectors.toList());

        //方法2:
        List<int[]> ints = Arrays.asList(arr4);         //此方法不适应于int[]
        List<String> strings2 = Arrays.asList(strings); //此方法适应于String[]

5、List转int /Long数组

//5 List转int /Long数组
        //5.1 List(内部是Int型)转int[]
        ArrayList<Integer> arrayList = new ArrayList<>();
        arrayList.add(1);arrayList.add(2);arrayList.add(3);arrayList.add(4);
        //方式1:intValue
        int[] ints1 = arrayList.stream().mapToInt(Integer::intValue).toArray();
        //方式2:valueOf
        int[] ints2 = arrayList.stream().mapToInt(Integer::valueOf).toArray();
        System.out.println(Arrays.toString(ints1));  //[1, 2, 3, 4]
        System.out.println(Arrays.toString(ints2));  //[1, 2, 3, 4]


        //5.2 List是内部是String元素 如下
        ArrayList<String> arrayList2 = new ArrayList<>();
        arrayList2.add("1");arrayList2.add("2");arrayList2.add("3");arrayList2.add("4");
        int[] ints3 = arrayList2.stream().mapToInt(Integer::valueOf).toArray();  //此时无法使用Integer::intValue
        System.out.println(Arrays.toString(ints3));  //[1, 2, 3, 4]

        //5.3 List转Long数组
        long[] longs = arrayList.stream().mapToLong(Integer::longValue).toArray();  //[1,2,3,4] ---->> [1, 2, 3, 4]
        long[] longs2 = arrayList2.stream().mapToLong(Integer::valueOf).toArray();  //["1","2","3","4"] ---->> [1, 2, 3, 4]
        System.out.println(Arrays.toString(longs));   //---->> [1, 2, 3, 4]
        System.out.println(Arrays.toString(longs2));  //---->> [1, 2, 3, 4]

6、List的求和

//方法1:list求和
Integer integer = sumList.stream().reduce(Integer::sum).orElse(0);
System.out.println(integer); //10
//方法2:转换为数组求和
int sum = sumList.stream().mapToInt(Integer::intValue).sum();
System.out.println(sum);  //10

7、数组的直接求和

//7、数组的求和
int sum1 = Arrays.stream(arr4).sum();
System.out.println(+sum1);   //[1,2,3,4,5,6,7] ---->> 28

三、字符串相关技巧

8、截取任意长度字符串

String s1 = "我是中国人";
String subStr = s1.substring(0,2);
System.out.println(subStr);  //我是

9、字符串转char数组

char[] chars = s1.toCharArray();
System.out.println(chars);

10、char数组转字符串

//10.1 全部转
String s2 = String.valueOf(chars);
System.out.println(s2);
//10.2 部分转
String s3 = String.valueOf(chars,1,2);  //第二参数是个数,第一参数是偏移量
System.out.println(s3);
原文地址:https://www.cnblogs.com/jiyongjia/p/13390790.html