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(); } } }
  • 相关阅读:
    让windows10的右键菜单既显示传统cmd又显示powershell
    配置php环境的一个nginx.conf
    windows中启动和终止nginx的两个批处理
    WxWidgets笔记
    安装archlinux的linux命令记录
    window中的attrib命令
    docker中i的作用
    airflow中的两个参数
    sqlite数据库中为字段设置默认值为当前时间
    记oracle使用expdp将数据导出到asm报错
  • 原文地址:https://www.cnblogs.com/xiaolovewei/p/8040258.html
Copyright © 2011-2022 走看看