欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;输出6import 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]);
    }
}
相关标签: 笔试 java