Längste Ausführung eines Zeichens in einer Zeichenfolge

19

Ihre Herausforderung: Schreiben Sie eine Funktion, die eine Zeichenfolge s, ein Zeichen cund die Länge des längsten Laufs von cin nimmt s. Die Länge des Laufs wird sein l.

Regeln :

  • Wenn die sLänge 0 ist oder cleer ist, lsollte 0 sein.
  • Wenn es keine Instanzen von cin gibt s, lsollte 0 sein.
  • Es gelten Standard- Regelungslücken und Standard-E / A-Regeln .
  • Egal wo sich im sLauf von cs befindet, lsollte gleich sein.
  • Beliebige druckbare ASCII-Zeichen können in sund erscheinen c.

Testfälle :

s,c --> l
"Hello, World!",'l'  -->  2
"Foobar",'o'         -->  2
"abcdef",'e'         -->  1
"three   spaces",' ' -->  3
"xxx xxxx xx",'x'    -->  4
"xxxx xx xxx",'x'    -->  4
"",'a'               -->  0
"anything",''        -->  0

Gewinner :

Wie beim gewinnt die kürzeste Antwort in jeder Sprache.

MD XF
quelle
Könnten Sie die Randfälle von leer sund a c, die nicht in einem nicht leeren sFall enthalten sind, in Ihre Testfälle aufnehmen?
Martin Ender
Welcher Zeichenbereich kann in s/ vorkommen c?
Martin Ender
6
ckann leer sein? In vielen Sprachen ist ein Zeichen nur eine Ganzzahl mit spezieller Semantik, und Sie können auch keine leere Ganzzahl haben.
Martin Ender
14
Das ergibt für mich keinen Sinn. Ihre Testfälle legen nahe, dass wir sie unterstützen müssen. Wenn wir es nicht unterstützen müssen, ist die Angabe der erforderlichen Ausgabe nicht sinnvoll, da ich immer nur sagen kann, dass es nicht unterstützt wird, wenn meine Lösung in diesem Fall etwas anderes tun würde.
Martin Ender

Antworten:

12

05AB1E , 5 Bytes

Code:

SQγOM

Verwendet die 05AB1E- Codierung. Probieren Sie es online!

Erläuterung:

SQ      # Check for each character if it is equal to the second input
  γ     # Split the list of zeros and ones into groups
   O    # Sum each array in the arrays
    M   # Get the maximum
Adnan
quelle
2
Schöne lösung! Ich wusste, dass es eine Möglichkeit gibt, das so zu machen, ich konnte mir das einfach nicht vorstellen.
Riley
γ¢Mfunktioniert nicht so, wie ich es mir vorgestellt habe, das wäre ein 3-Byte-Wert.
Magic Octopus Urn
8

Mathematica, 35 Bytes

Max[Tr/@Split@Boole@Thread[#==#2]]&

Reine Funktion, die eine Liste von Zeichen und ein anderes Zeichen als Eingabe verwendet und eine nicht negative Ganzzahl zurückgibt. Verbesserte meine erste Anstrengung, indem ich Adnans Beobachtung verwendete (stimmt zu!), Dass man testen sollte, ob das Sonderzeichen gleich ist, bevor man das Array aufteilt.

Thread[#==#2]prüft, ob jedes eingegebene Zeichen im ersten Argument dem als zweites Argument angegebenen Zeichen entspricht. Boolekonvertiert das resultierende Trues und Falses in 1s und 0s. Splitteilt die Liste in Läufe von aufeinanderfolgenden Elementen auf; Tr/@summiert jede Unterliste und Maxfindet den Gewinner. (Aufgrund der MaxFunktionsweise gibt diese Funktion zurück, wenn das erste Argument die leere Liste ist -∞. Sie wissen also, tun Sie das nicht.)

erste Einreichung (51 Bytes)

Max[Split@#/.a:{c_String..}:>Boole[c==#2]Length@a]&

Split@#teilt die Eingabe in Läufe aufeinanderfolgender Zeichen auf, z. B. {{"t"}, {"h"}, {"r"}, {"e", "e"}, {" ", " ", " "}, {"s"}, {"p"}, {"a"}, {"c"}, {"e"}, {"s"}}für den vierten Testfall. /.a:{c_String..}:>ersetzt jeden Teilausdruck a, der eine Liste eines wiederholtes Zeichen cdurch Length@amultipliziert Boole[c==#2], das ist , 1wenn cdas Eingabezeichen und entspricht 0ansonsten. Dann Maxextrahiert die Antwort.

Greg Martin
quelle
7

Japt , 20 18 15 Bytes

fV+Vî+)ª0)n o l

Probieren Sie es online!

5 Bytes gespart dank obarakon und ETHproductions

Tom
quelle
1
Ich habe eine Weile mit meiner eigenen Lösung herumgespielt und am Ende eine gefunden, die fast deiner, aber kürzer war. Wenn Sie fV+Vî+)... Ich lasse Sie den Rest herausfinden :-)
ETHproductions
@ETHproductions "If s is of length 0 or c is empty, l should be 0", ich nehme das vielleicht zu wörtlich
Tom
Oh, ich hatte nicht gemerkt, dass das immer dann fehlschlägt, wenn ses keine Instanzen von enthält c.
ETHproductions
7

Python , 38 Bytes

f=lambda s,c:+(c in s)and-~f(s,c+c[0])

Probieren Sie es online!

Dennis hat 3 Bytes gespart, indem cer eine Zeichenfolge mit doppelten Zeichen aktualisiert hat , anstatt rekursiv eine Zahl zu aktualisieren, mit der multipliziert cwerden soll.

xnor
quelle
1
f=lambda s,c:c in s and-~f(s,c+c[0])Speichert 6 Bytes (3 wenn False nicht erlaubt ist).
Dennis
5

05AB1E , 11 6 Bytes

-5 Bytes dank Carusocomputing

γvy²¢M

Probieren Sie es online!

γ      # split into chunks of consecutive equal elements
 vy    # For each chunk...
   ²¢  #  Count the number of input characters in this chunk
     M #  Push the largest count so far
Riley
quelle
γvy²¢Mfür 6 Bytes die gleiche Idee.
Magic Octopus Urn
4

Haskell, 43 39 Bytes

f c=maximum.scanl(\n k->sum[n+1|c==k])0

Probieren Sie es online!

Führen Sie den String durch und ersetzen Sie das aktuelle Zeichen durch einen Zähler, der erhöht wird, wenn er gleich ist, coder setzen Sie ihn auf zurück, 0wenn nicht. Nimm das Maximum der Liste.

Danke an @xnor für 4 Bytes.

nimi
quelle
Sie können es tun sum[n+1|c==k].
8.
@xnor: Schön! Ich habe mit *fromEnum(c==k)Pointfree und Lambda experimentiert , aber es waren immer 2 oder 3 Bytes länger.
nimi
4

C # 116 115 Bytes

Mein erster Code Golf

Wurde bearbeitet, weil die ursprüngliche Übermittlung ein Snippet war und der erforderliche Namespace für reguläre Ausdrücke fehlte

Bearbeiten Sie die vollständige Umschreibung von Nummer 2, um Zeichen mit speziellen Bedeutungen für reguläre Ausdrücke zu unterstützen

using System.Linq; s => c => System.Text.RegularExpressions.Regex.Replace (s, "[^" + c + "]", ++ c + ""). Split (c) .Max (x => x.Länge);

using System.Linq;s=>c=>{var r=(char)(c-1);return string.Join("",s.Select(x=>x==c?c:r)).Split(r).Max(x=>x.Length)};
Besen
quelle
3
Ich kenne C # nicht, aber es sieht so aus, als würde Ihr Code Variablen erwarten cund svordefiniert sein. Wir nennen dies ein "Code-Snippet" und es ist nicht erlaubt. Sie könnten wahrscheinlich Ihren Code als anonyme Funktion umstrukturieren oder diese Variablen für die Eingabe festlegen. Beides ist erlaubt.
Weizen-Assistent
Funktioniert es? (Siehe oben bearbeiten)
Besen
1
Wieder kenne ich C # nicht, aber es sieht so aus. Vielleicht möchten Sie unsere Tipps zum Golfen in C # lesen, um erfahrenere Tipps in C # zu erhalten.
Wheat Wizard
Danke für die Links! Ich werde auf jeden Fall die C # -Tipps lesen
Broom
3
Hallo, nur ein paar allgemeine Kommentare zum Golfen in C #, du kannst deine Funktion als definieren (s,c)=>. Sie müssen System.Text.RegularExpressions.Regexeine using-Anweisung direkt vor Ihrer Funktion verwenden oder hinzufügen.
LiefdeWen
4

JavaScript (ES6), 54 53 51 Byte

-2 Byte dank @Neil
-1 Byte dank @apsillers

s=>c=>[...s].map(x=>j=(i=x==c&&i+1)>j?i:j,i=j=0)&&j

Nimmt die Eingabe in currying Syntax: f("foobar")("o").

Testschnipsel

f=
s=>c=>[...s].map(x=>j=(i=x==c&&i+1)>j?i:j,i=j=0)&&j
String: <input id=I> Letter: <input id=J maxlength=1 size=1> <button onclick='O.innerHTML+=`f("${I.value}")("${J.value}") = ${f(I.value)(J.value)}\n`'>Run</button><pre id="O"></pre>

Eine weitere Option mit evalund for(54 Bytes)

s=>c=>eval("i=j=0;for(x of s)i=x==c&&i+1,i>j?j=i:0;j")

Alte Antwort mit Regex (85 Bytes)

s=>c=>c?Math.max(...s.match(eval(`/${/\w/.test(c)?c:"\\"+c}*/g`)).map(x=>x.length)):0
Justin Mariner
quelle
1
Ich denke, x==c?i++:i=0kann nur sein, i=x==c&&i+1da ein falseErgebnis auf x==cVergleich wird als 0für numerische Vergleiche und Inkremente (und wird nie der Rückgabewert sein, da jede Zahl, einschließlich 0, jwird immer Vorrang vor der Null-like falsein i)
Apsillers
@apsillers Danke, aktualisiert, aber was meinst du damit, dass es niemals der Rückgabewert ist?
Justin Mariner
Entschuldigen Sie die Verwirrung; Ich habe nur erklärt, dass die Änderung Ihr Programm niemals zurückbringen würde false(da die Herausforderung immer die Rückgabe einer Nummer erfordert)
apsillers
1
s=>c=>[...s].map(x=>j=(x!=c?i=0:++i)>j?i:j,i=j=0)&&jscheint ein paar Bytes zu sparen.
Neil
1
Sorry, ich habe den falschen Code gepostet, den ich posten wollte f=s=>c=>[...s].map(x=>j=(i=x==c&&i+1)>j?i:j,i=j=0)&&j, der ein Byte kürzer ist.
Neil
4

JavaScript (Firefox 30-57), 75 bis 72 Byte

(s,c)=>Math.max(0,...(for(s of s.split(/((.)\2*)/))if(s[0]==c)s.length))

ES6-kompatibles Snippet:

f=
(s,c)=>Math.max(0,...s.split(/((.)\2*)/).filter(s=>s[0]==c).map(s=>s.length))
<div oninput=o.textContent=f(s.value,c.value)><input id=s><input id=c maxlength=1 size=1><pre id=o>0

split Gibt eine Reihe leerer Zeichenfolgen und einzelner Zeichen sowie die Abläufe zurück, dies hat jedoch keine Auswirkungen auf das Ergebnis.

Neil
quelle
3

Mikro 112 Bytes

{T l m 1+:Q # T Q T l~:r}:Z{T[0]+}:X
{i s m:n
n p = if(Z,X)
i L=if(,a)}:a
0\\:C:s:i"":p"":n[0]:T
s l:L
a
T l m:\
raddish0
quelle
2

Perl 6 ,  45 43  42 Bytes

->$_,$c {$c&&$_??.comb(/$c+/)».chars.max!!0}

Probier es aus

->$_,$c {$c&&$_??.comb(/$c+/).max.chars!!0}

Probier es aus

->$_,$c {$c&$_??.comb(/$c+/).max.chars!!0}

Probier es aus

Erweitert:

-> $_, $c {       # pointy block lambda

    $c & $_       # AND junction of $c and $_
                  #   empty $c would run forever
                  #   empty $_ would return 4 ( "-Inf".chars )

  ??              # if True (neither are empty)

    .comb(/$c+/)  # find all the substrings
    .max          # find the max
    .chars        # get the length

  !!              # if False (either is empty)

    0             # return 0
}
Brad Gilbert b2gills
quelle
2

JavaScript, ES6, 52

Rekursive Lösung, bei der die Zeichenfolge als Array behandelt wird (Hinweis: Die ursprüngliche Eingabe ist immer noch eine Zeichenfolge) und Zeichen von links nach rechts verwendet werden C:

f=([C,...s],c,t=0,T=0)=>C?f(s,c,C==c&&++t,t>T?t:T):T

Zeichnet den aktuellen Einlauf tund den globalen Best-In aufT .

Erläuterung:

f=            // function is stored in `f` (for recursion)
  ([C,...s],  // turn input string in first-char `C` and the rest in `s`
   c,         // argument `c` to search for
   t=0,T=0)   // current total `t`, best total `T`
     =>
        C?             // if there is still any char left in the string
          f(s,c,       // recursively call `f`
            C==c&&++t, // increment `t` if char is match, or set `t` to `false`
            t>T?t:T)   // set global `T` to max of `t` and `T`
          :T           // when string is depleted, return `T`

Das Setzen tvon falseauf Nicht-Übereinstimmungen funktioniert, weil jedes Mal, wenn tes erhöht wird, falseso behandelt wird 0(dh so false + 1ist 1) und falseniemals mehr als ein Wert in global-max verglichen wird T.

Apsillers
quelle
1
Gute Lösung, ich war mit der [C,...s]Syntax nicht vertraut . Sollte mir helfen, slice()Bytes aus meinen eigenen Posts zu entfernen.
Rick Hitchcock
2

Gelee , 5 Bytes

=ŒgṀS

Dies ist eine dyadische Verknüpfung / Funktion, die eine Zeichenfolge und ein Zeichen akzeptiert. Beachten Sie, dass es nicht als vollständiges Programm funktionieren kann, da für die Eingabe über Befehlszeilenargumente die Python-Syntax verwendet wird und Python im Gegensatz zu Jelly Singleton-Zeichenfolgen nicht von Zeichen unterscheidet.

Probieren Sie es online!

Wie es funktioniert

=ŒgṀS  Main link. Left argument: s (string). Right argument: c (character)

=      Compare all characters in s with c, yielding 1 for c and 0 otherwise.
 Œg    Group adjacent, equal Booleans in the resulting array.
   Ṁ   Take the maximum. Note that any array of 1's will be greater than any array
       of 0's, while two arrays of the same Booleans are compared by length.
    S  Take the sum, yielding the length for an array of 1's and 0 otherwise.
Dennis
quelle
2

APL (Dyalog) , 18 11 Bytes

Erfordert das Austauschen mit in Version 16.0 oder mit ⎕ML←3(Standard auf vielen Systemen).

⌈/0,≢¨⊂⍨⎕=⎕

Probieren Sie es online!

⎕=⎕ Boolescher Wert für die Gleichheit zwischen zwei Eingaben

⊂⍨ Selbstpartitionierung (Partitionen beginnen, bei denen ein Element ungleich Null größer als sein Vorgänger ist)

≢¨ zählen jeden

0, voranstellen einer Null (für die Fälle mit leerer Eingabe)

⌈/ davon max


Alte Lösung

Fordert zuerst zur Eingabe von s auf , dann zur Eingabe von c

⌈/0,(⎕,¨'+')⎕S 1⊢⎕

Probieren Sie es online!

 Eingabeaufforderung für s

 dafür

(... )⎕S 1PCRE S uche für die Längen der Vorkommen

'+' ein Pluszeichen (bedeutet eines oder mehrere)

 an jedes der Elemente von angehängt

 der Aufgeforderte c

0, voranstellen einer Null (für die Fälle mit leerer Eingabe)

⌈/ davon max

c muss als 1-Element-Vektor einer eingeschlossenen Zeichenfolge angegeben werden, wenn ein Escape-Vorgang erforderlich ist.

Adam
quelle
2

PHP, 70 67 Bytes

drei Versionen:

while(~$c=$argv[1][$i++])$x=max($x,$n=($c==$argv[2])*++$n);echo+$x;
while(~$c=$argv[1][$i++])$x=max($x,$n=$c==$argv[2]?++$n:0);echo+$x;
for(;++$n&&~$c=$argv[1][$i++];)$x=max($x,$n*=$c==$argv[2]);echo+$x;

Nimmt Eingaben von Befehlszeilenargumenten entgegen. Laufen Sie mit ihnen-r oder testen Sie sie online .

Titus
quelle
2

PHP , 70 Bytes

for(;~$c=$argv[1][$i++];)$r[]=$argv[2]==$c?++$n:$n=0;echo$r?max($r):0;

Probieren Sie es online!

PHP , 75 Bytes

for(;~$s=substr($argv[1],$i++);)$r[]=strspn($s,$argv[2]);echo max($r?:[0]);

Probieren Sie es online!

PHP , 83 Bytes

<?=@preg_match_all("<".preg_quote($argv[2])."+>",$argv[1],$t)?strlen(max($t[0])):0;

Probieren Sie es online!

+8 Bytes zu vermeiden @

<?=($a=$argv[2])&&preg_match_all("<".preg_quote($a)."+>",$argv[1],$t)?strlen(max($t[0])):0;
Jörg Hülsermann
quelle
Die 67-Byte-Version schlägt für alle regulären Sonderzeichen (und #natürlich) fehl .
Titus
... und ~kann scheitern chr(207).
Titus
@Titus Done und Input können nur ASCII-Zeichen sein
Jörg Hülsermann
Gutes Auge für ++$n! Sie meinten druckbare ASCII. ;)
Titus
1
echo$r?max($r):0;speichert ein Byte
Titus
2

JavaScript (ES6), 47 40 38 Bytes

(7 Bytes dank @Neil und 2 Bytes dank @HermanLauenstein gespeichert.)

s=>g=c=>c&&s.includes(c)?1+g(c+c[0]):0

Erläuterung:

Sucht rekursiv nach einer längeren Ausführung, bis keine gefunden wird.

Snippet:

Rick Hitchcock
quelle
1
So einfach! Brillant!
Apsillers
Können Sie dies nicht tun f=(s,c)=>c&&s.includes(c)&&1+f(s,c+c[0])?
Neil
Oder noch besser, curry es zu s=>g=c=>c&&s.includes(c)&&1+g(c+c[0]).
Neil
Das funktioniert fast, aber es gibt "false" und eine Nullzeichenfolge für die letzten beiden Fälle zurück. Das wird durch Anhängen behoben ||0, was immer noch kürzer ist als meine Lösung.
Rick Hitchcock
Das f=ist nicht Teil der Curry-Version, da nur die innere Funktion rekursiv ist.
Neil
2

Gelee, 10 9 Bytes

f⁴L
ŒgÇ€Ṁ

Erläuterung:

f⁴L
f⁴      -Filter by the character argument.
  L     -Return Length of filtered String.

ŒgÇ€»/
Œg      -Group string by runs of characters.
  ǀ    -Run above function on each group.
    Ṁ   -Return the largest in the list.

Probieren Sie es online!

Dolch von Mesogrecia
quelle
Mit können Sie ein paar Bytes speichern Œgf€L€Ṁ.
Dennis
1

Haskell , 66 Bytes

import Data.List
((maximum.(0:).map length).).(.group).filter.elem

Probieren Sie es online!

Eine etwas leichter zu lesende Version - nicht sinnlos:

f c s = maximum (0:(map length (filter (elem c) (group s))))

Gruppiert die Zeichenfolge nach Buchstaben, filtert nach den Gruppen, die das richtige Zeichen enthalten, findet dann die Längen, fügt 0 an die Längenliste an, falls sie nicht angezeigt wird, und ermittelt schließlich den Maximalwert.

vroomfondel
quelle
1

Mathematica, 109 Bytes

(s=Differences[First/@StringPosition[#,#2]];k=t=0;Table[If[s[[i]]==1,t++;If[k<t,k=t],t=0],{i,Length@s}];k+1)&


Eingang

["xxx xxxx xx", "x"]

J42161217
quelle
1

CJam , 20 19 18 16 Bytes

0q~e`f{~@=*}$+W=

Probieren Sie es online!

Erläuterung

0                 e# Push 0. We'll need it later.
 q~               e# Read and eval input. Pushes c and s to the stack.
   e`             e# Run-length encode s: turns it into an array of [length, char] pairs.
     f{           e# Map over these pairs using c an extra parameter:
       ~          e#  Dump the pair to the stack.
        @=        e#  Bring c to the top, check equality with the char, pushing 0 or 1.
          *       e#  Multiply the length by the result.
           }      e# (end map)
            $     e# Sort the resulting list in ascending order.
             +    e# Prepend the 0 from before, in case it's empty.
              W=  e# Get the last element.
Geschäfts-Katze
quelle
1

Excel, 56 Bytes

{=MAX(IFERROR(FIND(REPT(A2,ROW(A:A)),A1)^0*ROW(A:A),0))}

ssollte eingegeben werden A1.
csollte eingegeben werden A2.
Die Formel muss eine Matrixformel ( Ctrl+ Shift+ Enter) sein, die geschweifte Klammern hinzufügt{ } .

Technisch ist dies nur möglich, wenn die längste Ausführung weniger als 1.048.576 beträgt (was 2 ^ 20 entspricht), da Sie auf diese Weise in der aktuellen Excel-Version Zeilen in einem Arbeitsblatt haben. Da die Millionen + -Werte bei jeder Neuberechnung in den Speicher geladen werden, ist dies keine schnelle Formel.

Ingenieur Toast
quelle
1

MATL , 15 Bytes

0i0v=dfd1L)0hX>

Probieren Sie es online!

Der grundlegende Algorithmus ist sehr einfach (keine Verwendung von Split!), Aber ich musste einwerfen 0i0vund 0hdie Kantenfälle berücksichtigen. Trotzdem fand ich den Ansatz gut, und vielleicht kann ich noch eine andere Technik finden, um die Randfälle zu behandeln: Der Algorithmus findet die längste Ausführung in der Mitte einer Zeichenfolge in Ordnung, aber nicht für einzelne Zeichen oder leere Zeichenfolgen; Ich teste immer noch, ob ich die Variablen an besseren Stellen auffüllen kann, um bessere Ergebnisse zu erzielen.

0i0v % Prepends and appends a zero to the (implicit) input.
   = % Element-wise equality with the desired char (implicit input)
   d % Pairwise difference. Results in a 1 at the start of a run, and -1 at the end.
   f % Get indices of 1's and -1's.
   d % Difference to get length of the runs (as well as length of non-runs)
 1L) % Only select runs, throw out non-runs. We now have an array of all run lengths.
  0h % 'Find' (`f`) returns empty if no run is found, so append a zero to the previous array.
  X> % Maximum value.

Funktioniert nicht leer c. Andererseits nehme ich an, dass jede Zeichenfolge eine unendliche Anzahl leerer Zeichenfolgen zwischen den einzelnen Zeichen enthält :)

Sanchises
quelle
1

R , 66 58 Bytes

-8 Bytes dank BLT und MickyT

function(s,c)max((r=rle(el(strsplit(s,''))))$l*(r$v==c),0)

Gibt eine anonyme Funktion zurück. TIO hat einen 1-Byte-Unterschied, weilel es aus unerklärlichen Gründen nicht funktioniert.

Probieren Sie es online!

Giuseppe
quelle
Speichern Sie ein Byte mitr=rle(el(strsplit(s,'')))
BLT
1
Ignoriere meinen vorherigen Kommentar, wenn du ihn gesehen hast. function(s,c)max((r=rle(el(strsplit(s,''))))$l*(r$v==c),0)
Ich
@BLT elfunktioniert nicht mit TIO (keine Ahnung warum) und ich habe es einfach aus dem dortigen Arbeitscode kopiert und eingefügt, also muss ich mich daran erinnern, das wieder in @MickyT abzulegen. Sehr clever! Vielen Dank!
Giuseppe
1

Java 8, 67 65 Bytes

s->c->{int t=0,m=0;for(char x:s)m=m>(t=x==c?t+1:0)?m:t;return m;}

-2 Bytes dank @ OlivierGrégoire

Nimmt Eingaben sals char[], und calschar

Erläuterung:

Probieren Sie es hier aus.

s->c->{          // Method with char[] and char parameters and int return-type
  int t=0,       //  Temp counter-integer
      m=0;       //  Max integer
  for(char a:s)  //  Loop over the characters of the input
    m=m>(
     t=x==c?     //   If the current character equals the input-character:
      t+1        //    Raise `t` by 1
      :          //   Else:
       0)        //    Reset `t` to 0
    ?m:t;        //   If `t` is now larger than `m`, put `t` as new max into `m`
                 //  End of loop (implicit / single-line body)
  return m;      //  Return the resulting max
}                // End of method
Kevin Cruijssen
quelle
1
m=m>(t=x==c?t+1:0)?m:t;ist kürzer als {t=x==c?t+1:0;m=m>t?m:t;}.
Olivier Grégoire
Obwohl es viel länger dauert, gefällt mir mein erster Gedanke:; s->c->java.util.Arrays.stream(s.split("[^"+c+"]")).mapToInt(z->z.length()).max().orElse(0))
Olivier Grégoire