zoukankan      html  css  js  c++  java
  • 删除字符串中出现次数最少的字符(考虑特殊字符与不考虑特殊字符解法)

    实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
    注意每个输入文件有多组输入,即多个字符串用回车隔开
    输出:删除字符串中出现次数最少的字符后的字符串。

    解法一:
    考虑特殊字符,万能代码

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.util.*;
    
    public class Main11 {
        public static void main(String[] args) throws FileNotFoundException {
            Scanner in = new Scanner(new FileInputStream("D:\JavaData\tmp/input.txt"));
            //Scanner in = new Scanner(System.in);
            while (in.hasNextLine()) {
                String input = in.nextLine();
                //去重字符
                Set<Character> set = new LinkedHashSet<>();
                for(int i=0;i<input.length();i++){
                    set.add(input.charAt(i));
                }
    
                Character[] characters = set.toArray(new Character[0]); //set集合转换为字符数组,存放字符
                int[] charCounts = new int[characters.length];  //存放characters字符数组对应的字符出现的次数
                for(int i=0;i<characters.length;i++){
                    for(int j=0;j<input.length();j++){
                        if(characters[i]==input.charAt(j)){
                            charCounts[i]++;
                        }
                    }
                }
    
                StringBuilder stringBuilder = new StringBuilder(); //保存需要删除字符
                int[] copyCharCounts = Arrays.copyOf(charCounts, charCounts.length);
                Arrays.sort(copyCharCounts); //找到出现最少次数的字符
                int min = copyCharCounts[0];
                for(int i=0;i<charCounts.length;i++){
                    if(min==charCounts[i]){
                        stringBuilder.append(characters[i]);
                    }
                }
    
                String index = stringBuilder.toString();
                StringBuilder outPut = new StringBuilder();
                for(int i=0;i<input.length();i++){
                    if(!index.contains(String.valueOf(input.charAt(i))))outPut.append(input.charAt(i));//重新组装
                }
                System.out.println(outPut.toString());
            }
        }
    }
    
    

    解法二:
    字符串只包含小写英文字母, 不考虑非法输入

    import java.io.*; 
    public class Main{
        public static void main(String []args) throws IOException{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String s = null;
            while((s=br.readLine()) != null){
                int []count = new int[26];
                int min = Integer.MAX_VALUE;
                for(char c : s.toCharArray()){
                    count[c - 'a']++;
                    min = Math.min(min,count[c-'a']);
                }
                String ret = "";
                for(char c : s.toCharArray()){
                    if(count[c - 'a'] != min){
                        ret += c + "";
                    }
                }
                System.out.println(ret);
            }
        }
    }
    
    
  • 相关阅读:
    mouse without borders无界鼠标使用教程
    动态令牌-(OTP,HOTP,TOTP)-基本原理
    sha256C代码例子
    常用的前端设计工具分享
    PHP获取搜索引擎关键字来源(百度、谷歌、雅虎、搜狗、搜搜、必应、有道)
    为 Web 设计师准备的 25+ 款扁平 UI 工具包
    万能字段使用技巧整理
    css中overflow:hidden的属性 可能会导致js下拉菜单无法显示
    QQ空间g_tk加密算法PHP版
    QQ聊天机器人for PHP版 (登录,收、发消息)
  • 原文地址:https://www.cnblogs.com/InternetJava/p/14350248.html
Copyright © 2011-2022 走看看