Sie sollten zunächst zwei Variablen definieren shortestLength
und shortest
, werden sie kürzeste Länge aufzeichnen Sie bis jetzt gefunden, und Schlüssel entsprechen. Und dann fange an, über die Karte zu iterieren.
Hier besteht der Trick darin, shortestLength
Variable mit einem Wert zu initialisieren, der im ersten Durchgang überschrieben wird. Der Vorteil ist, dass Sie keinen zusätzlichen Code schreiben müssen und zusätzlichen Speicher zuweisen müssen, um die Schlüssel zu sortieren und den kürzesten zu finden.
komplette Code ist wie folgt:
if len(myMap) == 0 {
// Empty map
}
// Will be over-written in first iteration
shortestLength := maths.MaxInt32
shortest := ""
for key, _ := range myMap {
keyLength := len(key)
if keyLength <= shortestLength {
shortest = key
shortestLength = keyLength
}
}
Die Variable shortestLength
wird mit der Länge des ersten Elements in der ersten Iteration der for-Schleife über geschrieben werden. Und am Ende der Schleife wird die Länge des kürzesten Schlüssels enthalten. Und shortest
wird den Schlüssel selbst enthalten.
Vielleicht verstehe ich die Frage nicht; Warum würde das von Ihnen bereitgestellte Code-Beispiel nicht funktionieren? –
@ william.taylor.09 Es war der kürzeste. – EMBLEM