题目描述
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述
删除字符串中出现次数最少的字符后的字符串。
例如:
输入:abcdd
输出:dd
结果
自己的eclipse上没问题,复制粘贴到牛客网上就不行,求大神解答!!orz
牛客网上:
自己eclipse上:
代码(Java)
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sca=new Scanner(System.in);
while(sca.hasNext()) {
String str=sca.nextLine();
char[] ch=new char[str.length()];
Map<Character,Integer> mp=new HashMap<Character,Integer>();
for(int i=0;i<str.length();i++) {
ch[i]=str.charAt(i);
System.out.print(ch[i]);
}
for(int i=0;i<ch.length;i++) {
int value=1;
char key=ch[i];
if(mp.containsKey(key))mp.put(key, mp.get(key)+1);
else mp.put(key, value);
}
Collection<Integer> c = mp.values();
Object[] obj = c.toArray();
Arrays.sort(obj);
int a= (int) obj[0];
for(int i=0;i<ch.length;i++) {
for(char key:mp.keySet()) {
if(mp.get(key)!=a) {
if(ch[i]==key) {
System.out.print(ch[i]);
break;
}
}
}
}
}
}
}
错误原因:
for(int i=0;i<ch.length;i++) {
……
}
此循环结束后没有加System.out.println();