javascriptが繰り返し文字なしで最長部分文字列を実装
lengthOfLongestSubstring (s) {
let str = ''
let arr = []
let target = []
for (let i of s) {
if (str.indexOf(i) < 0) {
str += i
} else {
arr.push(str)
str = i
}
}
arr.push(str)
//
arr.sort((a, b) => {
return b.length - a.length
})
// 同じ長さの部分集合が複数ある場合
arr.forEach(list => {
if (arr[0].length === list.length) {
target.push(list)
}
})
console.log(target)
}
// target 内容は、同じ長さの1個またはn個の部分集合を含む結果である。
lengthOfLongestSubstring("laijinxianzxcvbnm") // ["ianzxcvb"] 1の最長部分集合は
lengthOfLongestSubstring("dsauhdahfufansdmn") // ["fansdm"] 1の最長部分集合は
lengthOfLongestSubstring("laijinxianzxcvbnm") // ["qwert", "tyuio", "oasdf"] 3サブセットの長さは同じである