Как мне узнать, что все значения в HashMap посещаются один раз? - PullRequest
0 голосов
/ 31 марта 2019

Здесь я пытаюсь найти shorttestSubstring из строки, и я не могу найти способ узнать, как все значения hashmap посещаются один раз или нет в O (1), илиЕсть ли другой способ сделать это?

String mainString = "abacbbdabc";
String targetString = "adc"; 

HashMap будет повторять и обновлять значения, пока не обнаружит все символы из targetString, т.е. первая подстрока будет из индекса 0 to 6

public String findShortestSubstring(String mainString, String targetString) {
        HashMap<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < targetString.length(); i++) {
            map.put(targetString.charAt(i), 1);
        }

        for (int i = 0; i < mainString.length(); i++) {
            if (map.containsKey(mainString.charAt(i))) {
                map.put(mainString.charAt(i), 0);
            }
        }
        return null;
    }

1 Ответ

0 голосов
/ 31 марта 2019

Если я правильно понимаю:

Я бы использовал ArrayList.Попробуйте разбить по одной букве каждый элемент на список.Например,

mainString=skldfjkldfgj; // split it ["s","k","l","d","f","j","k","l","d","f","g","j"]
targetString=dfj;  //split it too ["d","f","j"]

Вы знаете, что dfj разделен на 3 элемента в ArrayList.Если вы найдете первую букву targetString в mainString, проверьте следующие 2 элемента, если они совпадают.

...