gpt4 book ai didi

java - 在一个循环中使用 HashMap 的第一个非重复字符?

转载 作者:行者123 更新时间:2023-12-02 04:06:04 25 4
gpt4 key购买 nike

最近一个面试官让我实现字符串中的第一个不重复字符,我用hashmap使用两个不同的循环实现了它。虽然时间复杂度是O(n)+O(n),但他要求我解决在一个循环中。有人可以告诉我该怎么做吗?

下面是我的实现:

import java.util.HashMap;
import java.util.Map;

public class firstnonrepeating {

public static void main(String[] args) {

String non = "nnjkljklhihis";

Map<Character, Integer> m = new HashMap<Character, Integer>();

for (int i = 0; i < non.length(); i++) {

if (m.get(non.charAt(i)) != null) {
m.put(non.charAt(i), m.get(non.charAt(i)) + 1);
} else {
m.put(non.charAt(i), 1);
}
}

for (int i = 0; i < non.length(); i++) {

if (m.get(non.charAt(i)) == 1) {
System.out.println("First Non Reapeating Character is "
+ non.charAt(i));
break;
} else {
if (i == non.length() - 1)
System.out.println("No non repeating Character");
}
}

}

}

最佳答案

    String non = "nnnjkljklhihis";
Map<String,LinkedHashSet<Character>> m = new HashMap<String,LinkedHashSet<Character>>() ;
m.put("one", new LinkedHashSet<Character>());
m.put("else", new LinkedHashSet<Character>());
m.put("all", new LinkedHashSet<Character>());
for (int i = 0; i < non.length(); i++) {
if (m.get("all").contains(non.charAt(i))) {
m.get("one").remove(non.charAt(i));
m.get("else").add(non.charAt(i));
} else {
m.get("one").add(non.charAt(i));
m.get("all").add(non.charAt(i));
}
}
if(m.get("one").size()>0){
System.out.println("first non repeatant : "+m.get("one").iterator().next());
}

关于java - 在一个循环中使用 HashMap 的第一个非重复字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34254104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com