昨晚快手笔试四个编程题代码(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

相关推荐

行云流水1971:这份实习简历的优化建议: 结构清晰化:拆分 “校园经历”“实习经历” 板块(当前内容混杂),按 “实习→校园→技能” 逻辑排版,求职意向明确为具体岗位(如 “市场 / 运营实习生”)。 经历具象化:现有描述偏流程,需补充 “动作 + 数据”,比如校园活动 “负责宣传” 可加 “运营公众号发布 5 篇推文,阅读量超 2000+,带动 300 + 人参与”;实习内容补充 “协助完成 XX 任务,效率提升 X%”。 岗位匹配度:锚定目标岗位能力,比如申请运营岗,突出 “内容编辑、活动执行” 相关动作;申请市场岗,强化 “资源对接、数据统计” 细节。 信息精简:删减冗余表述(如重复的 “负责”),用短句分点,比如 “策划校园招聘会:联系 10 + 企业,组织 200 + 学生参与,到场率达 85%”。 技能落地:将 “Office、PS” 绑定经历,比如 “用 Excel 整理活动数据,输出 3 份分析表;用 PS 设计 2 张活动海报”,避免技能单独罗列。 优化后需强化 “经历 - 能力 - 岗位需求” 的关联,让实习 / 校园经历的价值更直观。 若需要进一步优化服务,私信
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
8
分享

创作者周榜

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