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

标签 java data-structures hashmap

最近一个面试官让我实现字符串中的第一个不重复字符,我用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/

相关文章:

java - 如何从 servlet 流式传输 pdf 文档?

java - 在 Java/Android 中使用多个值生成 SHA 256 哈希

java - 生命游戏-数据结构

python - 从元组中获取备用值

java - Jfreechart选择

ruby - 存储类别的数据模型(多个父节点)

java空实例变量内存占用

java - 如何使用HashMap模拟缓存

java - 基于 arraylist 的排序索引的 Hashmap 排序

java - 有没有内置的图像识别功能