2016-08-04 74 views
0

我們只是說我有兩個字符串,a & b如何在不使用indexOf的情況下匹配另一個字符串中的字符串?

var a = '[email protected]'; 
var b = 'yahoo12345556'; 

我所期待的結果將是yahoo但使用a.indexOf(b)會給我-1

如果我改變byahoo &做a.indexOf(b),它顯然不會給我-1

我應該在循環中匹配字符嗎?但是這兩個字符串的長度並不相同。字符應該按順序排列也很重要,我不尋找字符的出現。

+0

所以找到這兩個變量之間通用的子字符串? –

+0

你的比賽標準是什麼?兩者之間最長的匹配子串? – juvian

+0

準確地說,與原始字符串中搜索字符串的位置無關。 – thedeliciousmuffin

回答

1

您可能能夠使用遞歸來解決這個問題:

function findLongestCommon (a, b, len) { 
    for (var i = 0; i < a.length-1; i=i+len) { 
     var sub = a.substring(i, len) 
     if (len == 0){ 
      return ""; 
     } 
     else if (sub.indexOf(b) != -1) { 
      return a; 
     } 
     else{ 
      return findLongestCommon(a, b, len-1); 
     } 
} 

通過調用findLongestCommon(A,B,則爲a.length),你就可以通過去信的每個組合開始最大(整個字符串)到最小(一個字母),如果沒有找到字母,它將返回空字符串。

+0

在問題標題:「*不使用indexOf *」。 – hatchet

+0

@hatchet我不認爲用戶的意思是「沒有使用indexOf」,而是「我試過indexOf,它沒有工作,任何更好的想法?」。通過使用遞歸和indexOf來實現目標的最簡單和最快捷的方式。如果你有更好的答案,然後張貼它。 –

相關問題