百度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);
}
}

