Einführung
In Android Studio und anderen IDEs gibt es Code-Vervollständigungen, um das effiziente Einfügen von Code zu unterstützen (insbesondere wenn die Namen der Klassen oder Methoden so ausführlich sind), wie in der Abbildung unten dargestellt.
Es gibt leicht unterschiedliche Logiken zwischen IDEs, um zu bestimmen, welche Klassen, Methoden und Variablen vorgeschlagen werden sollen, aber ansonsten sind sie üblich: Die Eingabe der Anfangsbuchstaben jedes Wortes und die Kennung, die diesen Anfangsbuchstaben entspricht, werden vorgeschlagen.
Herausforderung
Schreiben Sie in dieser Herausforderung ein Programm oder eine Funktion, die zwei Zeichenfolgen empfängt, nämlich inputund identifierbestimmen Sie, ob die Zeichenfolge mit der identifierübereinstimmt input.
Wir teilen uns identifierin Wörter auf, in denen:
- Auf einen Kleinbuchstaben folgt ein Großbuchstabe (
"SplitHere" -> "Split", "Here"). - Auf einen Großbuchstaben folgen ein Großbuchstabe und ein Kleinbuchstabe (
"SPLITHere" -> "SPLIT", "Here") oder - Es gibt eine Zahl oder einen Unterstrich
_("SPLIT_HERE" -> "SPLIT", "HERE").
Wenn dies immer noch nicht klar genug ist, ist hier der reguläre Ausdruck, der die Bedingung für die Aufteilung darstellt : (?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|[_0-9]. Hier einige Beispiele:
theWord_Example, In denen 3 Worte (the,Word,Example) gefunden werden können.THEWORD2EXAMPLE, in dem nur 2 Wörter (THEWORD,EXAMPLE) gefunden werden können (weilTHEWORDes sich um eine Reihe von Großbuchstaben handelt und dies auch der Fall istEXAMPLE).THEWordEXAMPLE3, In denen 3 Worte (THE,Word,Example) gefunden werden (Wordgilt als hier ein separates Wort sein).THEWORDEXAMPLEFOUR, in dem nur 1 Wort (THEWORDEXAMPLEFOUR) gefunden werden kann (die gesamte Folge von Großbuchstaben).
Zu diesem Zweck verwenden wir hier eine vereinfachte Version. In Wirklichkeit ist die Logik weitaus komplexer. In dieser Version gibt es nur zwei Regeln:
Wenn es
inputnur aus Kleinbuchstaben besteht,identifierstimmt ein mit deminputnur überein, wenn es eine Aufteilunginputin Teilzeichenfolgen gibt, dass für jede Teilzeichenfolge ein Wort amidentifierAnfang mit dieser Teilzeichenfolge in genau dieser Reihenfolge steht.Beispieleingabe:
sboTruthy Fällen: , , (UPDATE)
SQLiteBindOrColumnIndexOutOfRangeExceptionSparseBooleanArrayStringIndexOutOfBoundExceptionFalsche Fälle:
SeekBar(fehlto), (das steht nicht am Anfang eines Wortes)StatusBarNotificationoWenn
inputGroßbuchstaben enthalten sind,inputmuss bei Anwendung von Regel 1 vor jedem Großbuchstaben eine Aufteilung vorgenommen werden.Beispieleingabe:
sbOWahrheitsfälle:
SQLiteBindOrColumnIndexOutOfRangeExceptionFalsche Fälle: (das muss am Anfang eines Wortes stehen), (falsche Reihenfolge)
SparseBooleanArrayOStringIndexOutOfBoundException
I / O.
Eingabe : zwei Zeichenfolgen, eine für inputund eine für identifier. Sie können davon ausgehen , dass die Regex [A-Za-z]+Matches inputund die regex [A-Za-z0-9_]Matches identifier.
Ausgabe : einer der wahrheitsgemäßen oder falschen Werte. Sie können wählen, welcher Wert als wahr und was als falsch zurückgegeben werden soll, aber Ihre Wahl muss in allen Fällen konsistent sein. Zum Beispiel können Sie zurückkehren 1/0, true/false, π/eoder was auch immer, aber sie müssen das gleiche in allen Fällen bleiben.
Testfälle
Jede Zeile besteht aus zwei Zeichenfolgen, nämlich inputund identifier.
Wahrheitsfälle:
"sbo" "SparseBooleanArray"
"sbo" "StringIndexOutOfBoundException"
"sbo" "SQLiteBindOrColumnIndexOutOfRangeException"
"sbO" "SQLiteBindOrColumnIndexOutOfRangeException"
"Al" "ArrayList"
"AL" "ArrayList"
"Al" "ALARM_SERVICE"
"As" "ALARM_SERVICE"
"AS" "ALARM_SERVICE"
"SD" "SQLData"
"SqD" "SQLData"
"SqlD" "SQLData"
"SqDa" "SQLData"
"the" "theWord_Example"
"the" "THEWORD2EXAMPLE"
"the" "THEWordEXAMPLE3"
"the" "THEWORDEXAMPLEFOUR"
"thw" "theWord_Example"
"thw" "THEWordEXAMPLE3"
"te" "theWord_Example"
"te" "THEWORD2EXAMPLE"
"te" "THEWordEXAMPLE3"
Falsche Fälle:
"sbo" "SeekBar"
"sbo" "StatusBarNotification"
"sbO" "StringIndexOutOfBoundException"
"sbO" "SparseBooleanArray"
"AL" "ALARM_SERVICE"
"ASE" "ALARM_SERVICE"
"SQD" "SQLData"
"SqLD" "SQLData"
"SLD" "SQLData"
"SQDt" "SQLData"
"SQDA" "SQLData"
"thw" "THEWORD2EXAMPLE"
"thw" "THEWORDEXAMPLEFOUR"
"te" "THEWORDEXAMPLEFOUR"
Gewinnkriterien
Dies ist ein Code-Golf , so dass der kürzeste Code jeder Sprache gewinnt. Standardlücken sind nicht zulässig.
"sqldata", "SQLData"jedoch wahr.
"sbo" "StringIndexOutOfBoundException"passen *S*tringIndexOutOf*Bo*undException?

"SQLData", "SQLData"ist falsch?