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