阿里0314笔试题
第一道
static Map<Character, Integer> map = new HashMap<>();
static {
map.put('0', 0);
map.put('1', 1);
map.put('2', 1);
map.put('3', 2);
map.put('4', 1);
map.put('5', 2);
map.put('6', 2);
map.put('7', 3);
map.put('8', 1);
map.put('9', 2);
map.put('a', 2);
map.put('b', 3);
map.put('c', 2);
map.put('d', 3);
map.put('e', 3);
map.put('f', 4);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
s = s.replace("0x", "");
int ans = 0;
for (int i = 0; i < s.toCharArray().length; i++) {
ans += map.get(s.charAt(i));
}
} 第二道,暴力破解了
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(), m = scanner.nextInt();
int[][] nums = new int[n][m];
int[][] up = new int[n][m];
int[][] down = new int[n][m];
int[][] left = new int[n][m];
int[][] right = new int[n][m];
int ans = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
nums[i][j] = scanner.nextInt();
}
}
for (int i = 1; i < n; i++) {
for (int j = 0; j < m; j++) {
up[i][j] = up[i - 1][j] + nums[i - 1][j];
}
}
for (int i = n - 2; i >= 0; i--) {
for (int j = 0; j < m; j++) {
down[i][j] = down[i + 1][j] + nums[i + 1][j];
}
}
for (int j = 1; j < m; j++) {
for (int i = 0; i < n; i++) {
left[i][j] = nums[i][j - 1] + left[i][j - 1];
}
}
for (int j = m - 2; j >= 0; j--) {
for (int i = 0; i < n; i++) {
right[i][j] = nums[i][j + 1] + right[i][j + 1];
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (nums[i][j] == 0) {
if (left[i][j] >= 1) {
ans++;
}
if (right[i][j] >= 1) {
ans++;
}
if (up[i][j] >= 1) {
ans++;
}
if (down[i][j] >= 1) {
ans++;
}
}
}
}
System.out.println(ans);
} 第三道,最后十多分钟,看不懂题目,没做。
