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
实现删除字符串中出现次数最少的字符。若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串。
字符串中其他字符保持原来的顺序。
输入:
字符串仅仅包括小写英文字母, 不考虑非法输入,输入的字符串长度小于等于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的主要内容,如果未能解决你的问题,请参考以下文章