首页 > 百度4.11笔试编程题个人答案
头像
象牙塔外是江湖
编辑于 2021-04-12 10:10
+ 关注

百度4.11笔试编程题个人答案 内部员工回复

第一题,很简单
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        //测试用例:DDDDoo yooouu lllovvvvvvvvvvve                 mmmmee
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();
        char[] arr=new char[s.length()];
        for(int i=0;i<s.length();i++){
            arr[i]=s.charAt(i);
        }
        StringBuilder helper=new StringBuilder();
        helper.append(arr[0]);//先把第一个字符放进去
        for(int i=1;i<arr.length;i++){
            if(arr[i]!=arr[i-1]){
                helper.append(arr[i]);
            }
        }
        String res=helper.toString();
        System.out.println(res);
    }
}
第二题,细节很魔鬼
import java.util.*;
public class Main2 {
    //测试用例:Five Little Monkeys Jumping on the Bed. It was bedtime. So five little monkeys took a bath. Five little Monkeys put on their pajamas.
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();
        HashMap<String,Integer> nums=new HashMap<>();//记录各个单词及其出现的次数
        HashMap<String,String> record=new HashMap<>();//用来记录单词第一次出现时的大小写情况

        //构造一个用来解析str的StringTokenizer对象,后面是指定的分隔符
        StringTokenizer wordMap=new StringTokenizer(s,",!' '.;");

        while(wordMap.hasMoreElements()){//判断枚举对象中是否还有数据
            //返回枚举对象的下一个元素,转为string,再转为小写(这样大小写就可以共同计数了)
            String curWord=wordMap.nextElement().toString();
            String tempWord=curWord.toLowerCase();
            if(nums.containsKey(tempWord)==false){
                nums.put(tempWord,1);
                record.put(tempWord,curWord);//存储第一次出现的单词的形式
            }else{
                nums.put(tempWord,nums.get(tempWord).intValue()+1);
            }
        }
        //利用重写sort的compare函数,把排序顺序的依据改为hashMap的value值,得到降序排列的ArrayList集合
        List<Map.Entry<String,Integer>> col=new ArrayList<>(nums.entrySet());
        Collections.sort(col, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                return o2.getValue()-o1.getValue();
            }
        });

        int maxCount=col.get(0).getValue();//最高频的词汇出现了maxCount次
        List<String> list=new ArrayList<>();//存放最高频的词汇们
        for(int i=1;i<nums.size();i++){
            if(col.get(i).getValue()==maxCount){
                list.add(col.get(i).getKey());
            }else{
                break;
            }
        }
        Collections.sort(list);//因为list集合里的元素是String,因此可以直接用这个方法得到字符串的字典排序(默认的)
        String max_first_word=record.get(list.get(0));
        String res=max_first_word+" "+maxCount;
        System.out.println(res);
    }
}



全部评论

(3) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

热门推荐