java 如何删除一个字符串中出现次数最少的字符。比如addffdf 输出 ddffdf

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何删除一个字符串中出现次数最少的字符。比如addffdf 输出 ddffdf相关的知识,希望对你有一定的参考价值。

所有的字符加起来一共有256个包括特殊字符。之中“!“的ascii码最小。
int [] temp= new int[256];
for(int i ;i<inputString.length();i++0
temp[(inputString.indexOf(i)-'!')++;

int min=0;
for(int i ;temp)
min=i<min? i :min;

ArraList<int> index= new Arralist<int>();
for(int i ;i<temp.length;i++0)
if(temp[i]==min)
inedex.add(i);

for(int i : index)

String [] temp1=temp.split("将i加上”!“的ascii字转化为字符");
temp=temp1.toString();

System.out.print(temp);
参考技术A 代码暂时没环境,可以给你说思路:
一、创建HashMap,然后统计字符串每个字母的次数,将字母作为HashMap的键,字母出现的次数作为值
二、得到最小的值,然后得到对应的字母
三、String.split("字母"),得到不包含该字符的字符串数据
四、用StringBuffer将这些字符串连接起来,最终得到需要的字符串

不懂可以继续提问 O(∩_∩)O
参考技术B package cn.xk.java.demo;
public class Lest
public static String delLeast(String str)
//复制str
String sTemp = str;
//记录sTemp当前的长度
int sTempLen = sTemp.length();
//记录最短字符数目
int num = sTemp.length();
//记录最短字符
String sLeast = null;
//如果sTemp不为空
while(!sTemp.isEmpty())
//获取sTemp的第一个字符
String sFirst = String.valueOf(sTemp.charAt(0));
//用空串代替所有sFirst串
sTemp = sTemp.replaceAll(sFirst, "");
//如果num大于sFirst的个数
if(num > sTempLen - sTemp.length())
//取num等于sFirst的个数
num = sTempLen - sTemp.length();
//最短字符为sFirst
sLeast = sFirst;

//记录sTemp的当前长度
sTempLen = sTemp.length();

//用空串取代str中所有的最短字符
str = str.replaceAll(sLeast, "");
//返回str
return str;

public static void main(String[] args)
System.out.println(delLeast("aabcccbbc"));

本回答被提问者采纳
参考技术C 这个我是随意写的,你看看合适吗
import java.util.*;
public class GetR
public static void main(String args[])
String str;
int flg[] = new int[200];//只考虑小写或者大写的字母
int min=5;
char c='c';
Scanner s = new Scanner(System.in);
List<Object> v = new ArrayList<Object>();
str=s.next();
for(int i=0;i<str.length();i++)
char ch =str.charAt(i);
min=((++flg[ch]<min) ? flg[ch]:min);
if(min<=flg[ch])
c=ch;


for(int i=0;i<str.length();i++)
char ch=str.charAt(i);
if(ch==c)
else
v.add(ch);


String ss=v.toString();
System.out.println(ss);


算法基础:删除字符串中出现次数最少的字符(Golang实现)

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

输入:
字符串仅仅包括小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出:
删除字符串中出现次数最少的字符后的字符串。

例子输入:
abcdd
例子输出:
dd

代码实现

package huawei

import (
	"fmt"
)

func Test4Base() {
	s := "abcfbcca"
	result := deleteMinChars(s)
	fmt.Println(result)
}

func deleteMinChars(s string) string {
	countMap := make(map[rune]int, 0)
	//统计出现次数
	for _, v := range s {
		countMap[v]++
	}

	//查找最少次数
	var minCount int
	for _, v := range countMap {
		if minCount == 0 || v < minCount {
			minCount = v
		}
	}

	//删除字符串中出现次数为minCount的字符
	for i := len(s) - 1; i >= 0; i-- {
		if countMap[rune(s[i])] == minCount {
			s = s[:i] + s[i+1:]
		}
	}

	return s
}


以上是关于java 如何删除一个字符串中出现次数最少的字符。比如addffdf 输出 ddffdf的主要内容,如果未能解决你的问题,请参考以下文章

华为机试题 HJ23删除字符串中出现次数最少的字符

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

31:删除字符串中出现次数最少的字符

算法分析---删除字符串中出现次数最少的字符

算法删除字符串中出现次数最少的字符

算法基础:删除字符串中出现次数最少的字符(Golang实现)