昨晚快手笔试四个编程题代码(1,1,0.4,0.8)

自我感觉代码还算整洁,所以分享下
做完第一题的时候,我的intellij过期了,
所以第二题换成pycharm做,做完第二题我的pycharm过期了。
果然jetbrain的全家桶还是要买的
所以后面俩盲写的😂
1、ipv4 ipv6 java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        if (isIpv4(input)) {
            System.out.println("IPv4");
        } else if (isIpv6(input)) {
            System.out.println("IPv6");
        } else {
            System.out.println("Neither");
        }
        scanner.close();
    }

    public static boolean isIpv6(String ip) {
        String[] groups = ip.split(":");

        //invalid length
        if (groups.length != 8)
            return false;

        for (String group : groups) {

            if (group.length() > 4 || group.length() == 0)
                return false;

            if (!group.matches("[0-9a-zA-Z]+"))
                return false;
        }

        return true;
    }

    public static boolean isIpv4(String ip) {
        String[] groups = ip.split("\\.");

        //invalid length
        if (groups.length != 4)
            return false;

        for (String group : groups) {
            try {
                int number = Integer.parseInt(group);

                //starts with 0
                if (!String.valueOf(number).equals(group))
                    return false;

                //out of range
                if (number < 0 || number > 255)
                    return false;
            } catch (Exception e) {
                //invalid character
                return false;
            }
        }

        return true;
    }
}

2、全排列 python
s = input()

my_dict = {'2': 'abc', '3': 'def', '4': 'ghi', '5': 'jkl', '6': 'mno', '7': 'pqrs', '8': 'tuv', '9': 'wxyz'}

results = []


def dfs(s, result, index):
    if index == len(s):
        results.append(result)
        return
    key = s[index]
    values = my_dict[key]
    for value in values:
        dfs(s, result + value, index + 1)


dfs(s, '', 0)
print('[', end='')
print(', '.join(results), end='')
print(']')

第三个就不发了
4、等差数列 java 这个题只有0.8
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] numbers = new int[n];
        for (int i = 0; i < n; i++) {
            numbers[i] = in.nextInt();
        }
        in.close();

        Arrays.sort(numbers);

        if (n <= 2) {
            System.out.println(n);
        } else {
            int max = 2;
            int[] dp = new int[n];
            dp[0] = 1;
            dp[1] = 2;
            int dist = numbers[1] - numbers[0];
            for (int i = 2; i < n; i++) {
                int curr = numbers[i] - numbers[i - 1];
                if(curr == dist){
                    dp[i] = dp[i - 1] + 1;
                } else{
                    dist = curr;
                    dp[i] = 2;
                }
                max = Math.max(dp[i], max);
            }

            System.out.println(max);
        }
    }
}




#笔试题目##快手#
全部评论
第四题这个思路就不对啊。。过80只是因为测试用设计的有问题。。不太合理,因为我直接输出 数组长度,也过了80。。
点赞 回复 分享
发布于 2019-09-18 11:15
笔试时候过期,这也太惨了
点赞 回复 分享
发布于 2019-09-17 09:05

相关推荐

06-20 14:27
中山大学 C++
rt,day3就开始接需求
星际探神:你就想 你是水货他们都没面出来 他们也水 管他呢
点赞 评论 收藏
分享
自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
评论
点赞
8
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务