算法删除字符串中出现次数最少的字符
Posted Bug挖掘机
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法删除字符串中出现次数最少的字符相关的知识,希望对你有一定的参考价值。
题目描述
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
方法一
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class removetheleast
//删除字符串中出现次数最少的字符
public static String removetheleast()
//输入
Scanner s1 = new Scanner(System.in);
String input_str = s1.nextLine();
char[] c1 = input_str.toCharArray();
//统计字符出现的次数
Map<Character, Integer> m1 = new HashMap<>();
for (int i = 0; i < c1.length; i++)
if (m1.containsKey(c1[i]))
m1.put(c1[i], m1.get(c1[i]) + 1);
else
m1.put(c1[i], 1);
ArrayList<Character> list_min = new ArrayList<>();
int min = 800;
for (char j : m1.keySet())
if (m1.get(j) < min)
min = m1.get(j);
list_min.clear();
list_min.add(j);
else if (m1.get(j) == min)
list_min.add(j);
String res = "";
//清除最少的字符串
for (int x = 0; x < c1.length; x++)
if (!list_min.contains(c1[x]))
res += c1[x];
return res;
方法二(使用到StringBuilder)
import java.util.*;
public class Main
public static void main(String[] args)
Scanner in = new Scanner(System.in);
while(in.hasNext())
String s = in.nextLine();
int[] a = new int[26];
for(int i=0;i<s.length();i++)
a[s.charAt(i)-97]++;
int min = 21;
//找出出现最小的次数
for(int i=0;i<26;i++)
if(a[i]<min && a[i]>0)
min = a[i];
StringBuilder toBeDeleted = new StringBuilder();
for(int i=0;i<26;i++)
if(a[i]==min)
char c = (char)(a+i);
toBeDeleted.append(c);
String str = toBeDeleted.toString();
StringBuilder res = new StringBuilder();
for(int i=0;i<s.length();i++)
if(!str.contains(s.charAt(i)+""))
res.append(s.charAt(i));
System.out.println(res);
参考链接
以上是关于算法删除字符串中出现次数最少的字符的主要内容,如果未能解决你的问题,请参考以下文章