zoukankan      html  css  js  c++  java
  • 删除字符串中出现次数最少的字符

    华为机试题

     

    题目描述

    实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。 

    输入描述:

    字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。

    输出描述:

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

    示例1

    输入

    abcdd

    输出

    dd


    思路:用桶存放字符出现的次数。然后在找出出现次数最少的字符(这里因为桶中会有许多0,所以选的时候排除个数为0的情况)。最后遍历字符串中的字符,看它在出现的次数>最小次数,就输出。
    当然,也可以遍历字符串,如果字符出现次数等于最小次数,就用place(,"")代替字符,该方法是替换所有
    import java.util.LinkedList;
    import java.util.Scanner;
    /*
     * 第一行一个数T(T ≤ 100),表示数据组数。
     * 对于每组数据,第一行两个数n,k(1 ≤ n,k ≤ 100),接下来一行有2n个数a1,a2,...,a2n(1 ≤ ai ≤ 1000000000)。表示原始牌组从上到下的序列。
     */
    
    public class Main {
        public static void main(String[] args){
            Scanner sc=new Scanner(System.in);
            
            int[] tong=new int[26];
            while(sc.hasNext()){
                String s=sc.next();
                char[] c=s.toCharArray();
                //只能放小写字母,用来放每个字符出现的次数
                //初始化桶
                for(int i=0;i<tong.length;i++)
                    tong[i]=0;
    for(int i=0;i<c.length;i++){ tong[c[i]-'a']++; } //找出出现最少的次数,也就是找出tong数组中的最小值 int min=Integer.MAX_VALUE; for(int i=0;i<tong.length;i++){ if(tong[i]!=0&&tong[i]<min) min=tong[i]; } //遍历字符串,当字符出现的次数>最小次数,就输出
            //这里是关键,字符出现的次数,就是字符在桶中的大小
    for(int i=0;i<c.length;i++){ if(tong[c[i]-'a']>min){ System.out.print(c[i]); } }
            //这里一定要输出换行,因为还有下一次输入 System.out.println(); } } }
  • 相关阅读:
    聊聊简单又灵活的权限设计(RBAC)
    手把手搭建一个属于自己的在线 IDE
    聊一聊如何搭建高性能网站哪一些事
    一个老程序员的忠告:你这辈子输就输在以为靠技术就能生存下
    缓存提升性能的关键性手段
    python学习笔记1之-python简介及其环境安装
    聊一聊mycat数据库集群系列之双主双重实现
    mycat数据库集群系列之mycat读写分离安装配置
    mycat数据库集群系列之mysql主从同步设置
    mycat数据库集群系列之数据库多实例安装
  • 原文地址:https://www.cnblogs.com/xiaolovewei/p/8040258.html
Copyright © 2011-2022 走看看