题解 | #删除字符串中出现次数最少的字符#

删除字符串中出现次数最少的字符

http://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9

1.首先需要创建2个集合:
    a.1个集合以键值对形式存储,获取字符串中所有字符key及其对应出现的次数value,故选用HashMap<Character,Integer>集合;
    b.另外1个集合逐个按顺序存储字符,元素要求有序,而且可重复,故选用ArrayList集合;
2.其实for循环也可以实现找到最小值的功能:
    a.先通过for循环找到HashMap中最小的value值;
    b.同时也能找到对应的key值,再通过while循环将list集合中所有的key元素删除;
    c.只要在HashMap中找到a中的value值,待b步骤完成后即可通过break结束for循环;
3.再将删除部分元素后的list集合中的元素循环输出即可:

import java.util.Scanner;
import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;
public class Main{
    public static void main(String[] arg){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextLine()){
            String str = sc.nextLine();
            HashMap<Character,Integer> map = new HashMap<Character,Integer>();
            ArrayList<Character> list = new ArrayList<Character>();
            for(int i=0;i<str.length();i++){
                if(list.contains(str.charAt(i))){
                    map.put(str.charAt(i),map.get(str.charAt(i))+1);
                    list.add(str.charAt(i));
                }else{
                    map.put(str.charAt(i),1);
                    list.add(str.charAt(i));
                } 
            }   
            for(int j = 1;j<=str.length();j++){
                if(map.containsValue(j)){
                    for(Map.Entry<Character, Integer> entry:map.entrySet()){
                       if(entry.getValue() == j){
                           while(list.contains(entry.getKey())){
                              list.remove(entry.getKey()); 
                           }
                       } 
                    }
                    break;
                }
            }
            for(int j = 0;j<list.size();j++){
                System.out.print(list.get(j));
            }
            System.out.println();
        }
    }
}



全部评论

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
05-20 21:57
已编辑
门头沟学院 Java
喜欢吃卤蛋的悲伤蛙在...:建信融通没消息吧,我2说有实习挂简历不理了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务