快手Java版答案

A了三道,最后一个看题太长,估计也不会,随便编了遍思路。
第一题:版本比较
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int nums = input.nextInt();
        for (int i = 0; i < nums; i++) {
            String version_1 = input.next();
            String version_2 = input.next();
            if(getResult(version_1, version_2)<1){
                System.out.println(false);
            }else{
                System.out.println(true);
            }
        }
    }

    private static int getResult(String version_1, String version_2) {
        //分割字符串
        String[] verson_str1 = version_1.split("\\.");
        String[] verson_str2 = version_2.split("\\.");
        //计算最大长度
        int n = Math.max(verson_str1.length, verson_str2.length);
        for (int i = 0; i < n; i++) {
            //如果大于长度置为0,否则将其转换为整数
            int v1_tmp = i < verson_str1.length ? Integer.parseInt(verson_str1[i]) : 0;
            int v2_tmp = i < verson_str2.length ? Integer.parseInt(verson_str2[i]) : 0;
            //相等接着比较
            if (v1_tmp == v2_tmp) continue;
            //小于为-1
            if(v1_tmp < v2_tmp )  return 1;
            else return -1;
        }
        return 0;
    }
}
第二题:累积和为1,好像在LeetCode上叫快乐数
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int nums = input.nextInt();
        for (int i = 0; i < nums; i++) {
            int test_num = input.nextInt();
            getResult(test_num);
        }
    }

    private static int getResult(int test_num) {
        int i = 0;

        while (i < 100) {
            int result = 0;
            while (test_num != 0 ) {
                result += Math.pow((test_num % 10), 2);
                test_num = test_num / 10;
            }
            if (result == 1) {
                System.out.println(true);
                return 1;
            }
            test_num = result;
            i++;
        }
        System.out.println(false);
        return 0;
    }
}


第三题:插入
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        while (input.hasNext()){
            String t1 = input.nextLine();
            String t2 =  input.nextLine();
            getResult(t1, t2);
        }

    }

    private static void getResult(String t1, String t2) {
        String [] test_1 = t1.split(" ");
        String [] test_2 = t2.split(" ");
        StringBuilder sb = new StringBuilder();
        int j = 0;
        for (int i = 0; i < test_1.length; i++) {
            if (i!=0 && i % 4 == 0 && j < test_2.length) {
                sb.append(test_2[j] + " ");
                j++;
            }
            sb.append(test_1[i] + " ");
        }
        while (j<test_2.length){
            sb.append(test_2[j] + " ");
            j++;
        }
        System.out.println(sb.substring(0,sb.length()-1));
    }
}


#leetcode##快手##笔试题目#
全部评论
最后一道题,找有红边连着的点,然后这些点分块,求出总数,然后减去每个块大小的k次方,我觉得是这样,但是我超时了
点赞 回复
分享
发布于 2019-08-25 20:38

相关推荐

点赞 8 评论
分享
牛客网
牛客企业服务