你可以帮我这个java程序吗? 我有一个两个字符串,我需要确定没有重复字母的字符是什么。 输入是: 热爱生活 输出将是: ovif
它将删除所有具有重复的字符。
这是我的代码,但它只打印并找到有重复的字母。
public static void main(String[] args) {
Map<Character, Integer> map = new HashMap<Character, Integer>();
input = new Scanner(System.in);
String aw, bw;
System.out.println("Input First Word: ");
aw=input.next();
System.out.println("Input Second Word: ");
bw=input.next();
String s = aw+bw;
char[] chars = s.toCharArray();
for(Character ch:chars){
if(map.containsKey(ch)){
map.put(ch, map.get(ch)+1);
} else {
map.put(ch, 1);
}
}
Set<Character> keys = map.keySet();
for(Character ch:keys){
if(map.get(ch) > 1){
System.out.println(ch+" ");
}
}
}
我想打印它在该程序中删除的字符。
答案 0 :(得分:1)
for(Character ch:keys){
if(map.get(ch) == 1){
System.out.println(ch+" ");
}
}
将打印出一次出现的所有字符。您将两个字符串中的每个字符都添加到地图中,因此只出现一次的字符将具有值1.
答案 1 :(得分:0)
Set
非常适合查看历史记录。
public void test() {
String s = "love life";
Set<Character> unique = new HashSet<>();
Set<Character> duplicate = new HashSet<>();
for (char c : s.toCharArray()) {
// Have we seen this one before already.
if (!duplicate.contains(c)) {
if (!unique.add(c)) {
// It was already there.
unique.remove(c);
// Mark it as duplicate.
duplicate.add(c);
}
}
}
System.out.println("Unique:" + Arrays.toString(unique.toArray(new Character[0])));
}
操纵Set
很简单:
Set<Character> inString(String s) {
Set<Character> in = new HashSet<>();
for (char c : s.toCharArray()) {
in.add(c);
}
return in;
}
public void test() {
Set<Character> inFirst = inString("glass");
Set<Character> inSecond = inString("bass");
Set<Character> inFirstButNotInSecond = new HashSet<>(inFirst);
inFirstButNotInSecond.removeAll(inSecond);
System.out.println("In first but not in second:" + inFirstButNotInSecond);
}