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