Jedes Zeichen ist entweder .
oder sein Index, so dass Sie es mit einem Bit darstellen können.
"0b" + "1.345.7".replace(/./g, c=>c==='.'?0:1); // "0b1011101"
"0b" + "123..6.".replace(/./g, c=>c==='.'?0:1); // "0b1110010"
Dann können Sie die Bit-Operatoren AND &
verwenden:
"0b1011101"
& "0b1110010";
// 0b1010000
Schließlich Sie es nur in String zurück konvertieren müssen und die Anzahl der 1
zählen:
0b1010000.toString(2).split('1').length-1; // 2
Wahrscheinlich würde ich es nicht so machen, aber nur zum Spaß :)
In der Tat, weniger Speicher zu verschwenden, können Sie die Daten als Zahlen speichern, anstatt von Strings
0b1011101; // 93 - only needs 64 bits!
0b1110010; // 114 - only needs 64 bits!
Und die Daten
0b1011101 >> 6 & 1; // 1 - 1st bit
0b1011101 >> 5 & 1; // 0 - 2nd bit
0b1011101 >> 4 & 1; // 1 - 3rd bit
0b1011101 >> 3 & 1; // 1 - 4th bit
0b1011101 >> 2 & 1; // 1 - 5th bit
0b1011101 >> 1 & 1; // 0 - 6th bit
0b1011101 >> 0 & 1; // 1 - 7th bit
ich einige Code verwenden würde, wahrscheinlich Javascript wie das ist die Sprache, die Sie –
I don getaggt weiß nicht, wie es weitergeht ..: s –
Teilen Sie es in kleinere verwaltbare Schritte: 1. Teilen Sie eine Zeichenfolge in ein Array von Tagen, die auf 2 gesetzt sind. Suchen Sie, welche Zahlen in beiden Arrays gemeinsam sind.Jedes Mal, wenn Sie stecken - zerlegen Sie eine Aufgabe in kleinere Aufgaben, die Sie bewältigen und nacheinander lösen können. – zerkms