JavaScriptの配列で珍しい最長の部分文字列を見つける
サブシーケンス
この問題の目的のために、サブシーケンスを、残りの要素の順序を変更せずにいくつかの文字を削除することによって1つのシーケンスから派生できるシーケンスとして定義します。任意の文字列はそれ自体のサブシーケンスであり、空の文字列は任意の文字列のサブシーケンスです。
問題
文字列の配列を唯一の引数として受け取るJavaScript関数を作成する必要があります。私たちの関数は、それらの中で最も長い珍しいサブシーケンスの長さを見つける必要があります。
最長共通部分列とは、配列内の文字列の1つの最長部分列を意味し、この部分列は、配列内の他の文字列の部分列であってはなりません。
珍しいサブシーケンスが存在しない場合は、-1を返す必要があります。
たとえば、関数への入力が-
の場合const arr = ["aba", "cdc", "eae"];
その場合、出力は-
になります。const output = 3;
出力の説明:
「aba」、「cdc」、「eae」はすべて、長さ3の有効な珍しいサブシーケンスです。
例
このためのコードは-
になりますconst arr = ["aba", "cdc", "eae"];
const longestUncommon = (strs) => {
const map = {};
const arr = [];
let max = -1;
let index = -1;
for(let i = 0; i < strs.length; i++){
map[strs[i]] = (map[strs[i]] || 0) + 1;
if(map[strs[i]] > 1){
if(max < strs[i].length){
max = strs[i].length
index = i;
}
}
}
if(index === -1) {
strs.forEach(el =>{
if(el.length > max) max = el.length;
})
return max;
}
for(let i = 0; i < strs.length; i++){
if(map[strs[i]] === 1) arr.push(strs[i]);
}
max = -1
for(let i = arr.length - 1; i >= 0; i--){
let l = arr[i];
let d = 0;
for(let j = 0; j < strs[index].length; j++){
if(strs[index][j] === l[d]){
d++;
}
}
if(d === l.length){
let temp = arr[i];
arr[i] = arr[arr.length - 1];
arr[arr.length - 1] = temp;
arr.pop();
}
}
arr.forEach(el =>{
if(el.length > max) max = el.length;
})
return max;
};
console.log(longestUncommon(arr)); 出力
そして、コンソールの出力は-
になります3
-
JavaScript配列長プロパティ
Array lengthプロパティは、指定された配列に存在する要素の総数である配列の長さを設定または返します。 以下は、配列の長さプロパティ-のコードです。 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title&
-
JavaScript-配列オブジェクトの長さ
JavaScriptのlengthプロパティは、オブジェクトのサイズを返します。以下は、文字列および配列オブジェクトの長さのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document