字串去重的再研究

2022-03-25 05:47:19 字數 1925 閱讀 4206

1、前言

2、陣列去重

方法1:使用hash的方法解決該問題

2.1.1 初次寫出的**array.prototype.unique = function(), result ,i, len = arr.length;

for(i=0 ; i

這是我第一次寫的**,咋一看沒什麼問題,但是請看下面這個例子

var a = ['a','b','a','c',3,5,8,3,'8']

a.unique() // ['a','b','c',3,5,8]

但是我們期望的結果是什麼呢?自然是['a','b','c',3,5,8,'8'],至於什麼原因大家都明白。下面是當時我寫的很2的方法:

2.1.2 第一次修bugarray.prototype.unique=  function(), obj2 = {}, result = , i , len = arr.length;

for(i=0; i< len; i++)

}else }}

return result;

} var a = ['a','b','a','c',3,5,8,3,'8']

var b = a.unique(); //['a','b','c',3,5,8,'8']

iq太低,上面的**太土,太2,現在想想看還有沒有其他辦法。

2.1.3 第二次修bugarray.prototype.unique=  function(), result = , i , len = arr.length;

for(i=0; i< len; i++)

} return result;

}var a = ['a','b','a','c',3,5,8,3,'8'];

var b = a.unique(); // ['a','b','c',3,5,8,'8']

接下來問題來了,假如存在這樣的陣列 var a = ['a','b','a','c',3,5,8,3,'8',8];你媽這又出現問題了,結果為['a','b','c',3,5,8,'8',8],那就都存起來:

2.1.4 第三次修bugif(!array.prototype.indexof)

} return -1; }}

array.prototype.unique= function(), result = , i , len = arr.length;

for(i=0; i< len; i++)

} return result;

}var a = ['a','b','a','c',3,5,8,3,'8',8];

var b = a.unique(); // ['a','b','c',3,5,8,'8'] 到目前為止應該不會出現bug了

方法2:使用indexof方法或者lastindexof方法

這個方法需要考慮到低版本的瀏覽器是不知道indexof屬性的,所以使用前非常有必要寫下相容性的**:

if(!array.prototype.indexof)

} return -1; }}

array.prototype.unique= function(), result = , i , len = arr.length , n;

for(i=0; i< len; i++)

} return arr;

}var a = ['a','b','a','c',3,5,8,3,'8',8];

var b = a.unique(); //['a','b','c',3,5,8,'8']

現在想出來的也就這兩種方法了。 

字串去重

字串去重,思路是在乙個字串例如 strstrrtsiiiinnnggggg 中,遍歷所有的字元,拼接到stringbuffer中。在執行速度上來看stringbuffer的拼接速度要快與string。通過str.charat i 的方法得到當前遍歷到的字元。通過indexof方法得到該字元第一次出現...

字串去重

doctype html en utf 8 viewport content width device width,initial scale 1.0 document title head 思路 1.宣告乙個空字元 2.將需要去重字元,乙個乙個新增到空字串中 條件 s裡面沒有這個字元,就加進去 v...

字串右旋 字串去重

1.將n個字元的陣列,迴圈右移k位。時間複雜度o n 實現思路 兩種實現思路 1.借助輔助空間,按照後面的順序進行拷貝,最後拷貝回字串 2.三次反轉法就可實現 include void rotatekth char str,int size,int k 2.附加題 刪除小寫字母字串中重複字元。如果可...