【题目】给出一组字符串,找出其中以小写的d或e字母结尾的单词出现的次数,结果以字典格式打印。其中不以d或e结尾的单词,不在结果统计中出现
输入描述:
若干个字符串,它们以逗号进行分隔,样例如下所示:
abc,head,tail,middle,head,today,tail,rain,end,cup,apple,abc,head,tail,middle,head,today,tail,rain,end,cup,apple,abc,head,tail,middle,head,today,tail,rain,end,cup,apple,abc,head,tail,middle,head,today,tail,rain,end,cup,apple,abc,head,tail,middle,head,today,tail,rain,end,cup,apple,hard,abc,head,tail,middle,head,today,tail,rain,end,cup,apple
输出描述:
以字典格式打印,样例输出如下所示:
{head=12, apple=6, middle=6, end=6, hard=1}
输入例子1:
abc,head,tail,middle,head,today,tail,rain,end,cup,apple,abc,head,tail,middle,head,today,tail,rain,end,cup,apple,abc,head,tail,middle,head,today,tail,rain,end,cup,apple,abc,head,tail,middle,head,today,tail,rain,end,cup,apple,abc,head,tail,middle,head,today,tail,rain,end,cup,apple,hard,abc,head,tail,middle,head,today,tail,rain,end,cup,apple
输出例子1:
{head=12, apple=6, middle=6, end=6, hard=1}
代码:
import java.util.*;
//abc,head,tail,middle,head,today,tail,rain,end,cup,apple,abc,head,tail,middle,head,today,tail,rain,end,cup,apple,abc,head,tail,middle,head,today,tail,rain,end,cup,apple,abc,head,tail,middle,head,today,tail,rain,end,cup,apple,abc,head,tail,middle,head,today,tail,rain,end,cup,apple,hard,abc,head,tail,middle,head,today,tail,rain,end,cup,apple
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String ss = scanner.next();
count(ss);
}
public static void count(String ss){
String[] s=ss.split(",");
int sum =0;
HashMap<String,Integer> result = new HashMap<String,Integer>();
for(int i=0;i<s.length;i++){
if(s[i].substring(s[i].length()-1).contains("d") || s[i].substring(s[i].length()-1).contains("e")){
//假如s[i]这个字符已存在map的键里
if(result.containsKey(s[i])){
//取出s[i]这个键对应的值
int sum3= result.get(s[i]);
result.put(s[i],sum3++);
}else{
result.put(s[i],1);
}
}
}
System.out.println(result);
}
}
测试用例通过失败……兄弟姐妹们,我哪里错了呀……
答:错在2点。
第一点是sum3++,这是后置自加,加进去的还是原来的值。
第二点,没有考虑数组里字符为空的情况。
以下是标准答案:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String ss = scanner.next();
count(ss);
}
public static void count(String ss){
String[] s=ss.split(",");
int sum =0;
HashMap<String,Integer> result = new HashMap<String,Integer>();
for(int i=0;i<s.length;i++){
//异常防越界。
if(s[i].length() != 0){
if(s[i].charAt(s[i].length()-1)=='e'||s[i].charAt(s[i].length()-1)=='d'){
//假如s[i]这个字符已存在map的键里
if(result.containsKey(s[i])){
//取出s[i]这个键对应的值
int sum3= result.get(s[i]);
int sum4= sum3+1;
result.put(s[i],sum4);
}else{
result.put(s[i],1);
}
}
}
}
System.out.println(result);
}
}