Hilfe! Zahlreiche Lösungen löste es in HashMap, es effizienter als Arraylist, aber der Einfachheit halber von Code und als Anfänger-Coder ist:eindeutiges Wort Abkürzung alternative Lösungen?
Ich frage mich, ob es in Arraylist gelöst werden können: alle Elemente abkürzen erste und die gegebene Wort, dann vergleichen, ob abgekürztes gegebenes Wort mit irgendeinem der Elemente in dem Array übereinstimmt. Bitte prüfen Sie den Code, der mit "why not ..." beginnt und die Funktion "isUnique2". Es gibt immer Fehler, jemand sagt mir bitte, wie es behoben werden kann.
Mein zweiter Gedanke war: erste & & letzte Element & & Länge zu vergleichen. Wäre das nicht viel einfacher? Wenn nicht, sag mir bitte, warum es falsch ist.
//<first letter><number><last letter> check if a word is unique //Given dictionary = [ "deer", "door", "cake", "card" ] ,isUnique("dear") -> false, isUnique("cart") -> true, isUnique("cane") -> false, isUnique("make") -> true public class UniqueWordAbbr { Map<String, String> map= new HashMap<String, String>(); public static void main(String[] args){ String[] dictionary = { "deer", "door", "cake", "card" }; UniqueWordAbbr uwa = new UniqueWordAbbr(dictionary); System.out.println(uwa.isUnique2 (dictionary,"cane")); System.out.println(uwa.isUnique("word")); } //why not create array to check if elements match??? public boolean isUnique2(String[] dictionary, String word) { String abbr_w = abbreviate(word); List abbr_dictionary = new ArrayList(); for(int i = 0; i<dictionary.length; i++){ String n_w = abbreviate(dictionary[i]); abbr_dictionary.add(n_w); } for (Object copy : abbr_dictionary) { if (abbr_w.equals(copy)) return false; else return true; } return false; } //1. abbreviate private String abbreviate(String str){ return str.charAt(0)+ Integer.toString(str.length()-2) + str.charAt(str.length()-1); } //2. establish the map, convert array into map public UniqueWordAbbr(String[] dictionary){ for(int i = 0; i < dictionary.length; i++){ String abbr = abbreviate(dictionary[i]); //always check if map does NOT contain first! if (!map.containsKey(abbr)){ map.put(abbr, dictionary[i]); }else{ map.put(abbr, ""); } } } // check if word is unique public boolean isUnique(String word) { String abbr_w = abbreviate(word); //为啥不直接 查询 map.containsKey(abbr_w)? if (map.containsKey(abbr_w)) { //why also need to compare the value? if (map.get(abbr_w).equals(word)){ return true; }else { return false; } } return true; }
}
Sie möchten überprüfen, ob dieses Element tatsächlich existiert? – emotionlessbananas
danke für die Frage, mein Denkprozess war, das gesamte Wörterbuch (in ArrayList) zu kürzen, und vergleichen Sie das abgekürzte gegebene Wort, sehen, ob das gegebene Wort in der ArrayList existieren. Ist das klar? –