Es scheint, dass Codierungstests in Ingenieurinterviews im Ausland durchgeführt werden, und in vielen Fällen besteht die Hauptsache darin, bestimmte Funktionen und Klassen entsprechend dem Thema zu implementieren.
Anscheinend ergreifen viele Ingenieure Maßnahmen auf der Website namens LetCode.
Es ist eine Site, die die algorithmische Leistung trainiert, die dem Codierungstest standhält, der in der frühen Geschichte durchgeführt wird, und es ist ein unvermeidlicher Weg für diejenigen, die eine Karriere bei einem ausländischen Technologieunternehmen aufbauen möchten.
Ich habe es großartig geschrieben, aber ich habe im Moment keine Pläne für ein solches Interview.
Als IT-Ingenieur wäre es jedoch besser, die gleiche Algorithmusleistung wie eine Person zu haben. Daher möchte ich das Problem unregelmäßig lösen und die Methode, die ich damals dachte, als Memo aufschreiben.
Ich löse es mit Python3.
Letztes Mal Leet Code Day 58 "20. Gültige Klammern" ab Null
Im Moment priorisiere ich das Medium der 100 beliebtesten Fragen. Easy wurde gelöst. Wenn Sie interessiert sind, gehen Sie bitte zum Tisch.
Twitter Ich mache es.
1221. Split a String in Balanced Strings Der Schwierigkeitsgrad ist einfach.
Das Problem ist, dass die Zeichenfolge "s" angegeben wird, die nur "L" oder "R" enthält. Teilen Sie eine Zeichenfolge mit der gleichen Anzahl von Zeichen in die maximale Anzahl ausgeglichener Zeichenfolgen und geben Sie die maximale Anzahl der Unterteilungen zurück.
Selbst wenn Sie es selbst übersetzen, ist es schwer zu verstehen. Sehen wir uns also vorerst ein Beispiel an.
Input: s = "RLRRLLRLRL" Output: 4 Explanation: s can be split into "RL", "RRLL", "RL", "RL", each substring contains same number of 'L' and 'R'.
Input: s = "RLLLLRRRLR" Output: 3 Explanation: s can be split into "RL", "LLLRRR", "LR", each substring contains same number of 'L' and 'R'.
Input: s = "LLLLRRRR" Output: 1 Explanation: s can be split into "LLLLRRRR".
Input: s = "RLRRRLLRLL" Output: 2 Explanation: s can be split into "RL", "RRRLLRLL", since each substring contains an equal number of 'L' and 'R'
Das ist leicht zu verstehen.
class Solution:
def balancedStringSplit(self, s: str) -> int:
count = 0
total = 0
for i in s:
if i == "R":
count += 1
else:
count -= 1
if count == 0:
total += 1
return total
# Runtime: 28 ms, faster than 74.00% of Python3 online submissions for Split a String in Balanced Strings.
# Memory Usage: 13.9 MB, less than 40.98% of Python3 online submissions for Split a String in Balanced Strings.
Bereiten Sie einfach zwei Variablen vor und ziehen Sie sie ab!
Danke für das Match.
Deshalb habe ich eine einzeilige Antwort aus der Diskussion mitgebracht.
class Solution:
def balancedStringSplit(self, s: str) -> int:
return list(accumulate(1 if c == "R" else -1 for c in s)).count(0)
# Runtime: 28 ms, faster than 74.00% of Python3 online submissions for Split a String in Balanced Strings.
# Memory Usage: 13.8 MB, less than 62.73% of Python3 online submissions for Split a String in Balanced Strings.
Was ist, wenn ich dies in einem tatsächlichen Codierungsinterview geschrieben habe? Wenn überhaupt, ist der Ablauf des Entwurfs des Algorithmus schwierig, sodass dies möglicherweise kein Problem darstellt. Ist es richtig, die obige lange, aber sichere Methode und ein wenig vage zu schreiben?
Wenn ich es erhalte, werde ich wahrscheinlich das richtige auswählen. Ich möchte es nicht abdecken.
Bis hierher für diese Zeit. Danke für deine harte Arbeit!
Recommended Posts