【华为OD题库-112】删除字符串中出现次数最少的字符-Java

题目

题目描述:
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
输入描述:
字符串只包含小写英文字母一,不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
示例1:
输入例子:
abcdd
输出例子:
dd

思路

统计每个字符出现的次数,得到最小次数
再遍历s,如果其出现的次数等于最小次数,那么删除该字符即可

题解

package hwod;

import java.util.*;

public class DelStrLittleChar {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        final String s = sc.nextLine();
        System.out.println(delStrLittleChar(s));
    }


    private static String delStrLittleChar(String s) {
        int[] freq = new int[26];
        int min = -1;//记录最小位置的索引
        for (int i = 0; i < s.length(); i++) {
            int key = s.charAt(i) - 'a';
            freq[key]++;
            if (min == -1 || freq[key] < freq[min]) min = key;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            if (freq[s.charAt(i) - 'a'] == freq[min]) continue;
            sb.append(s.charAt(i));
        }
        return sb.toString();

    }
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

说明

本专栏所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/qq_31076523/article/details/134176793。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

你可能感兴趣的:(华为OD题库JAVA题解,华为od,java)