JavaScript文字列を重くする方法
3386 ワード
文字列の削除
面接で文字列の重さが問われましたが、頭が少し空きました.まとめてみます.
1.二層for循環ネスト
新しい文字列、二重循環、外層循環元文字列、内層循環の新しい文字列を作成し、フラグビット記録元文字列と新しい文字列の要素が等しいかどうかを設定します.そうでなければ、要素を新しい文字列に追加します.
第一の方法に基づいて,インナーサイクルの代わりにindexof()を使用する.
search()メソッドは、文字列で指定されたサブ文字列を検索したり、正規表現と一致するサブ文字列を検索します.
文字列の要素が巡回して現れたら、オブジェクトの対応する属性値を1に設定します.これは繰り返されません.しかもこのような時間の複雑さはO(n)です.
配列
1.2層のforは入れ子に循環し、その後spliceは元に戻ります.
二層循環、外層循環配列要素、内層循環比較値、値を同時に削除します.
新しい配列、外層循環配列要素、内層循環の新しい配列はindexof()で置換されます.
ソト順序を利用して、順序付け後の結果に基づいて巡回と隣接元素比率を行います.
indexOf(search value、froomindex)search value:必要です.検索する文字列の値を指定します.froomindex:任意の整数パラメータです.文字列で検索を開始する位置を指定します.
時間の複雑さはO(n)である.
面接で文字列の重さが問われましたが、頭が少し空きました.まとめてみます.
1.二層for循環ネスト
新しい文字列、二重循環、外層循環元文字列、内層循環の新しい文字列を作成し、フラグビット記録元文字列と新しい文字列の要素が等しいかどうかを設定します.そうでなければ、要素を新しい文字列に追加します.
function removeRepeatStr(str){
var newStr = '';
var flag;
var len = str.length;
for(var i=0; i
2.indexOfを使用する()第一の方法に基づいて,インナーサイクルの代わりにindexof()を使用する.
function removeRepeatStr (str) {
var newStr = '';
var len = str.length;
for (var i = 0; i < len; i++) {
if (newStr.indexOf(str[i]) == -1) {
newStr = newStr + str[i];
}
}
return newStr;
}
var str = 'bilibililalala'
console.log(removeRepeatStr(str))
3.search方法search()メソッドは、文字列で指定されたサブ文字列を検索したり、正規表現と一致するサブ文字列を検索します.
function removeRepeatStr (str) {
var newStr = '';
var len = str.length;
for (var i = 0; i < len; i++) {
if (newStr.search(str[i]) == -1) {
newStr = newStr + str[i];
}
}
return newStr;
}
var str = 'bilibililalala'
console.log(removeRepeatStr(str))
4.利用対象属性文字列の要素が巡回して現れたら、オブジェクトの対応する属性値を1に設定します.これは繰り返されません.しかもこのような時間の複雑さはO(n)です.
function removeRepeatStr (str) {
var obj = {};
var newStr = "";
for (var i = 0; i < str.length; i++) {
if (!obj[str[i]]) {
newStr += str[i];
obj[str[i]] = 1;
}
}
return newStr;
}
var str = 'bilibililalala'
console.log(removeRepeatStr(str))
5.サブ記号列を再配列して、配列の重さに変換します.配列
1.2層のforは入れ子に循環し、その後spliceは元に戻ります.
二層循環、外層循環配列要素、内層循環比較値、値を同時に削除します.
function unique (arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1)
j--
}
}
}
return arr
}
var arr = [1, 2, 3, 1, 4, 5, 2, 6]
console.log(unique(arr))
2.indexOf()を利用して重さを取る【またはincludes()を使うのも同じです.】新しい配列、外層循環配列要素、内層循環の新しい配列はindexof()で置換されます.
function unique (arr) {
var array = []
for (let i = 0; i < arr.length; i++) {
if (array.indexOf(arr[i]) == -1) {
array.push(arr[i])
}
}
return array
}
var arr = [1, 2, 3, 1, 4, 5, 2, 6]
console.log(unique(arr))
3.ソート()の方法で重さを取るソト順序を利用して、順序付け後の結果に基づいて巡回と隣接元素比率を行います.
function unique (arr) {
arr.sort()
var array = [arr[0]]
for (let i = 1; i < arr.length; i++) {
if (arr[i] != arr[i - 1]) {
array.push(arr[i])
}
}
return array
}
var arr = [1, 2, 3, 1, 4, 5, 2, 6]
console.log(unique(arr))
4.filter()の方法で重いindexOf(search value、froomindex)search value:必要です.検索する文字列の値を指定します.froomindex:任意の整数パラメータです.文字列で検索を開始する位置を指定します.
function unique (arr) {
return arr.filter((item, index, arr) => {
return arr.indexOf(item, 0) === index
})
}
var arr = [1, 2, 3, 1, 4, 5, 2, 6]
console.log(unique(arr))
5.ES 6のセットを利用して重さを取るvar arr = [1, 2, 3, 1, 4, 5, 2, 6]
console.log([...new Set(arr)])
6.利用対象属性時間の複雑さはO(n)である.
function unique (arr) {
let obj = {};
arr.forEach((item) => {
obj[item] = '';
})
return Object.keys(obj)
}
var arr = [1, 2, 3, 1, 4, 5, 2, 6]
console.log(unique1(arr))