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);
            }
        }
    }
    
    
  • 相关阅读:
    c 概念详解
    c 目录
    win文件操作
    使用panads处理数据
    冒泡排序
    notepad++搭建python环境
    继承方法-->一级一级继承
    原型问题2—原型对象的替换
    原型问题1—原型对象的替换
    js继承——扩展Object方式实现继承
  • 原文地址:https://www.cnblogs.com/InternetJava/p/14350248.html
Copyright © 2011-2022 走看看