2017-07-24 4 views
2

Ich habe zwei Saiten hinzugefügt, die zweite ist die gleiche wie die erste, aber mit drei hinzugefügt Zeichen irgendwo in der Zeichenfolge (drei der gleichen Zeichen)finden Zeichen String js

Beispiel unten:

string1 = "hello" 
string2 = "aaahello" 

// => 'a' 

Die Zeichen könnten irgendwo in der Zeichenfolge sein. dass Ein weiteres Beispiel

string1 = "abcde" 
string2 = "2db2a2ec" 

// => '2' 

Es gibt eine weitere Einschränkung auch die zusätzlichen Zeichen unter der ursprünglichen Zeichenkette existieren könnten

string1 = "aabbcc" 
string2 = "aacccbbcc" 

// => 'c' 

ich folgende probiert, aber das gibt mir nicht die drei identischen Zeichen, die der zweiten Zeichenfolge hinzugefügt wurden. Ich kann nicht herausfinden, wie die drei hinzugefügt identische Zeichen zu finden:

function addedChar(a, b){ 
    var i = 0; 
    var j = 0; 
    var result = ""; 

    while (j < b.length) 
    { 
     if (a[i] != b[j] || i == a.length) 
      result += b[j]; 
     else 
      i++; 
     j++; 
    } 


    return result; 
} 
+1

Wir wissen nicht, wie man es beheben, entweder weil Sie nicht, was genau erklärt haben, ist nicht richtig über den Code arbeiten Sie auf dem Laufenden . Error? Falsche Ausgabe? Nichts passiert? – csmckelvey

+0

@csm_dev Sorry über mein Englisch. Ich hoffe, dass ich jetzt besser erklärt habe –

+1

Viel besser - Sie haben erklärt, was es nicht richtig macht "_gibt mir nicht die drei identischen Zeichen_". Das letzte benötigte Stück ist zu erklären, was dein Code gerade macht. – csmckelvey

Antwort

2

Was Kampf das? Dies geht nur in eine Richtung, aber Sie können es in beide Richtungen tun.

string1 = "aabbcc"; 
string2 = "aacccbbcc"; 
diff = string2; 

for(let i = 0; i < string1.length; i++) { 
    const char = string1[i]; 
    diff = diff.replace((new RegExp(`${char}`)), ''); 
} 

//ccc 
console.log(diff); 
+0

Dies erfüllt nicht das dritte Beispiel in der Frage: - (... sollte folgendes zurückgeben 'c' ...' string1 = "aabbcc"; string2 = "aacccbbcc" ' –

+0

@RaulRodriguez jetzt denke ich, dass es tut. Ich denke, es kann rfactored aber das Prinzip funktioniert, denke ich. – pethel

+0

es funktioniert, danke –

0

function findAddedChars(string1, string2) { 
 
    return string1.split("").reduce((s2, char) => { 
 
    const index = s2.indexOf(char) 
 
    return s2.slice(0, index).concat(s2.slice(index + 1)) 
 
    }, string2.split("")).join("")[0] 
 
} 
 

 
let string1 
 
let string2 
 

 
string1 = "hello" 
 
string2 = "aaahello" 
 
console.log(findAddedChars(string1, string2)) // => 'a' 
 

 
string1 = "abcde" 
 
string2 = "2db2a2ec" 
 
console.log(findAddedChars(string1, string2)) // => '2' 
 

 
string1 = "aabbcc" 
 
string2 = "aacccbbcc" 
 
console.log(findAddedChars(string1, string2)) // => 'c'

0

Effiziente Lösung:

var string1 = "aabbcc" 
 
var string2 = "aacccbbcc" 
 

 
function charCount (str) { 
 
    var count = {}; 
 
    for (var i = 0; i < str.length; i++) { 
 
     count[str[i]] = (count[str[i]] || 0) + 1; 
 
    } 
 
    return count; 
 
} 
 

 
var count1 = charCount(string1); 
 
var count2 = charCount(string2); 
 

 
console.log(Object.keys(count2).filter(char => count2[char] != count1[char])[0]);