58同城笔试(2021/10/23)
程序员文章站
2022-06-09 09:18:14
...
58同城笔试(2021/10/23)
# 第一道
题目大意:输入“AAABBCCCDD”,输出A3B2C3D2;输入ABCDEF,输出ABCDEF
```java
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//采用行输入,将输入回车符之前的一行数据赋值给str
String str = sc.nextLine();
//都是优先转换为字符数组
char[] chars = str.toCharArray();
//System.out.println(chars);
int len = chars.length;
//用HashMap存储
//如果字符不存在,则put进map,并将value设置为1;如果字符存在,则put进map,将值覆盖为map.get(chars[i])+1;
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i <len ; i++) {
if(!map.containsKey(chars[i])){
map.put(chars[i],1);
}else{
map.put(chars[i],map.get(chars[i])+1);
}
}
//需要将数取出来然后拼接字符串输出
//遍历map采用entrySet方法加上foreach
//加上""是为了防止字符转化为ASCII码的数字
map.entrySet().forEach(entry -> {
System.out.print(entry.getKey()+ "" + (entry.getValue() == 1 ? "" : entry.getValue()));
});
}
}
# 第二道
题目大意:类似于股票买卖最高利润(1次买卖),但不知道为啥只通过了20%
import java.util.Scanner;
public class test002 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
char[] chars = str.toCharArray();
int len = chars.length;
int[] arr = new int[len];
for (int i = 0; i <len ; i++) {
arr[i] = chars[i]- '0';
}
//相当于隔天买卖最大值问题,即股票最大利润问题
int min = Integer.MAX_VALUE;
int max = 0;
for (int i = 0; i <len ; i++) {
if(arr[i] < min){
min = arr[i];
}else if(arr[i] - min > max){
max = arr[i] - min;
}
}
System.out.println(max);
}
}
# 第三道
题目大意:一个数组,输出出现指定次数的对应数字。当数字出现次数相同时,输出数字最大的。
例如:输入 arr[1,1,2,2,3],2;输出2;输入arr=[1,3,6,6,6,2,2,2,2],3;输出6。
import java.util.*;
public class test003 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int times = sc.nextInt();
Scanner sca = new Scanner(System.in);
String str = sca.nextLine();
char[] chars = str.toCharArray();
int len = chars.length;
int[] arr = new int[len];
for (int i = 0; i <len ; i++) {
arr[i] = chars[i]- '0';
}
Arrays.sort(arr);
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i <len ; i++) {
if(!map.containsKey(arr[i])){
map.put(arr[i],1);
}else{
map.put(arr[i], map.get(arr[i])+1);
}
}
List<Integer> list = new ArrayList<>();
map.entrySet().forEach(entry -> {
if(entry.getValue() == times){
list.add(entry.getKey());
}
});
int[] ans = new int[list.size()];
for (int i = 0; i <list.size() ; i++) {
ans[i] = list.get(i);
}
Arrays.sort(ans);
System.out.println(ans[list.size()-1]);
}
}
上一篇: 标签控制器
下一篇: 阿里巴巴2017秋招前端笔试题