Comments (64)
麻烦把题目表述清楚行吗?装什么呢,中文没学好?
from fe-interview.
function lenSetStr (str) {
return [...new Set(str)].length
}
不会调整格式凑合看
from fe-interview.
/**
* 题目:字符串出现的不重复最长长度
* 整体思路:
* 用一个滑动窗口装没有重复的字符,枚举字符记录最大值即可
* 对于遇到重复字符如何收缩窗口大小?
* 我们可以用 map 维护字符的索引,遇到相同的字符,把左边界移动过去即可
* 挪动的过程中记录最大长度
*/
var lengthOfLongestSubstring = function (s) {
let map = new Map();
let i = -1
let res = 0
let n = s.length
for (let j = 0; j < n; j++) {
if (map.has(s[j])) {
i = Math.max(i, map.get(s[j]))
}
res = Math.max(res, j - i)
map.set(s[j], j)
}
return res
};
from fe-interview.
function lenSetStr (str) { return [...new Set(str)].length }不会调整格式凑合看
不是这样吧
from fe-interview.
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function (s) {
const arr = [...s]
let res = 1;
let result = arr.reduce((total, cur, i, arr) => {
if (i == 0) {
return cur;
} else {
if (total.indexOf(cur) < 0) {
return total + cur
} else if (res < total.length) {
res = total.length
return total.slice(total.indexOf(cur) + 1, total.length) + cur
} else {
return total.slice(total.indexOf(cur) + 1, total.length) + cur
}
}
}, "")
if (res < result.length) {
res = result.length
}
return res
};
console.log(lengthOfLongestSubstring("loddktdji"))
console.log(lengthOfLongestSubstring("dvdf"))
console.log(lengthOfLongestSubstring("adfafwefffdasdcx"))
from fe-interview.
遍历的同时,进行截取比较
let str = 'fdsfsdzffdfdddfsdsds'
let arr = []
const s = str.split('')
let total= 0; // 长度
let maxStr = '' // 最长不重复长度的字符串
for(var i = 0;i <s.length;i++){
const ele = s[i]
const idx = arr.indexOf(ele)
if(idx>-1){
arr = arr.slice(idx+1)
}
arr.push(ele)
if(arr.length>total){
maxStr = arr.join('')
total = arr.length
}
}
console.log(total)
console.log(maxStr)
from fe-interview.
function lengthOfLongestSubstring(s) {
let max = 0;
let arr = [];
for (let i = 0; i < s.length; i++) {
let index = arr.indexOf(s[i]);
if (index !== -1) {
arr.slice(0, index + 1);
}
arr.push(s[i]);
max = Math.max(max, arr.length);
}
return max;
}
from fe-interview.
```js function lenSetStr (str) { return [...new Set(str)].length }不会调整格式凑合看
你这何止是不会调格式,你这是不会读题啊!
from fe-interview.
function lengthOfStr (str) {
let res = ""
let result = [...str].reduce((acc, v, i) => {
if (i === 0) {
return v;
} else {
if (acc.indexOf(v) < 0) {
return acc + v
} else {
res = res.length < acc.length ? acc : res
return acc.slice(acc.indexOf(v) + 1, acc.length) + v
}
}
}, "")
console.log(res.length > result.length ? res : result)
return Math.max(res.length, result.length)
}
from fe-interview.
/**
* @param str {string}
* 使用快慢双指针;对比快慢指针所指的值,如果不相等则计数加1,否则计数重置
*/
function maxNoRepeatStr (str) {
// 为空时,直接返回0
if (!str) {
return 0;
}
// 慢指针指向0
let slow = 0;
// 快指针指向1
let fast = 1;
// 计数默认为1 - 至少一个不重复
let count = 1;
// 当快指针走到结尾时停止
while (str.length > fast) {
// 不相等,计数加1
if (str[slow] !== str[fast]) {
count++;
} else {
// 重置为1
count = 1;
}
// 快慢指针同时走
slow++;
fast++;
}
return count;
}
console.assert(maxNoRepeatStr("loddktdji") === 6);
console.assert(maxNoRepeatStr("dvdf") === 4);
console.assert(maxNoRepeatStr("adfafwefffdasdcx") === 7);
from fe-interview.
const lengthOfLongestSubString = (s: string) => {
let left = 0,
right = 0,
res = 0,
map = new Map();
while (right < s.length) {
if (map.has(s[right])) {
left = Math.max(left, right);
}
res = Math.max(res, right - left + 1);
map.set(s[right], right);
right++;
}
return res;
};
console.assert(lengthOfLongestSubString("") === 0);
console.assert(lengthOfLongestSubString("aa") === 1);
console.assert(lengthOfLongestSubString("aabc") === 3);
from fe-interview.
/*
* @Author: codytang
* @Date: 2020-07-18 17:54:20
* @LastEditTime: 2020-07-18 18:01:55
* @LastEditors: codytang
* @Description: 第 4 题:字符串出现的不重复最长长度
*/
function longNoRepeatStr(str) {
let max = -Infinity;
let count = 0;
let pre = null;
for (let index = 0; index < str.length; index += 1) {
const cur = str[index];
if (cur !== pre) {
count += 1;
} else {
count = 1;
}
pre = cur;
if (count > max) max = count;
}
return max;
}
console.log(longNoRepeatStr("aabccddabcde")); //6
from fe-interview.
function str(str) {
if (typeof str !== 'string') return 0;
let strArr = [...str];
let prev = '';
let curr = '';
let length = 1;
let max = 1;
for (let i = 0; i < strArr.length - 1; i++) {
prev = strArr[i];
curr = strArr[i + 1];
if (prev !== curr) {
length++;
} else {
max = Math.max(max, length);
length = 1;
}
}
return Math.max(max, length);
}
说下思路,每个字符比较,如果有相同就保存当前length,没有就++,最后对比。
from fe-interview.
function deStr(str) {
let tmpStr = '';
let maxStr = '';
for(let i = 0; i < str.length; i++) {
const index = tmpStr.indexOf(str[i]);
if(index != -1) { // 原来的不重复字符串,找到重复的字符
if(maxStr.length <= tmpStr.length) {
maxStr = tmpStr;
}
tmpStr += str[i];
tmpStr = tmpStr.slice(index + 1);
}else {
tmpStr += str[i];
}
}
return maxStr ? maxStr : str;
}
deStr('abacbefkb')
from fe-interview.
`var lengthOfLongestSubstring = function (s) {
var arr = s.split('')
var tag = 0
var map = new Map()
arr.forEach((res, i)=>{
if(!map.has(res)){
map.set(res, i)
tag = i
}
})
return tag
};`
from fe-interview.
利用双指针 迭代过程中更新最大长度
function fn(str) {
let left = 0, right = 0
let maxLen = 0
while(left <= right && right < str.length) {
const index = str.slice(left, right + 1).indexOf(str[right + 1])
maxLen = Math.max(maxLen, str.slice(left, right + 1).length)
if (index > -1) {
right++
left = right
} else {
right++
}
}
return maxLen;
}
from fe-interview.
@wangyingjie123 楼上的,写的对不对自己没数吗?能不能自己充分验证了再发出来?
from fe-interview.
var str = 'abacvdtrgasgdoijmiqunvlhsdanwqp';
var longStr = (str) => {
var long = 0;
var arr = []
for(var i=0;(i+long)<str.length;i++){
var index = arr.indexOf(str[i]);
arr.push(str[i]);
if(index!==-1){
arr.splice(0,index+1)
}
long = Math.max(arr.length,long)
}
return long
}
longStr(str)
from fe-interview.
var lengthOfLongestSubstring = function (s = '') {
let map = new Map();
let i = -1,
res = 0,
len = s.length;
for(let j = 0; j < len; j++) {
if(map.has(s[j])) {
// 遇到重复项,记录索引值
i = Math.max(i, map.get(s[j]))
}
// 更新最大长度,减掉重复项索引
res = Math.max(res, j - i);
map.set(s[j], j);
}
}
from fe-interview.
var maxLen = function(s){
let max = 0;
let str = '';
for(let i=0;i<s.length;i++){
if(str.indexOf(s[i]) < 0) {
str += s[i];
if(str.length>max){
max = str.length;
}
} else {
str = str.slice(str.indexOf(s[i])+1) + s[i];
}
}
return max;
}
from fe-interview.
const twoSum = function(nums, target) {
let a, b;
for(let i = 0; i < nums.length; i++) {
let tmp = target - nums[i];
let arr = nums.slice(i+1);
let ind = arr.indexOf(tmp);
if(ind > -1){
a = i;
b = i + 1 + ind;
break;
}
}
return [a, b];
};
from fe-interview.
function fn(s) {
let temps = '',max=0
for(let i=0;i<s.length;i++){
let current = s[i]
if(temps.indexOf(s[i]) !== -1){
temps = temps.substring(temps.indexOf(s[i])+1)
}
temps += current
max = Math.max(temps.length, max)
}
return max
}
from fe-interview.
function maxLength(str) {
let res = []
let arr = str.split('')
let max=0
while (arr.length>0) {
let cur = arr.shift()
if(!res.includes(cur)){
res.push(cur)
}else{
max=Math.max(max, res.length)
res = []
}
}
console.log(max)
}
maxLength('112345123')
from fe-interview.
function longNoRepeatStr(str) {
if (Object.prototype.toString.call(str) !== '[object String]') throw 'unvalid string'
let arr = str.split('')
return Array.from(new Set(arr)).length
}
console.log(longNoRepeatStr('ssdfsd'))
from fe-interview.
function strNorepeatMaxLength (str) {
let repeatIndex = 0,
maxLength = 0;;
for (let i = 0; i < str.length; i++) {
if (i > 0 && (str[i] === str[i - 1])) {
if (i - repeatIndex > maxLength) {
maxLength = i - repeatIndex;
}
repeatIndex = i;
}
}
return maxLength === 0 ? str.length : (str.length - repeatIndex > maxLength ? str.length - repeatIndex : maxLength);
}
strNorepeatMaxLength("1234555123456") // 输出7
from fe-interview.
const str = "efdfabcdefghiabbcccdef";
const len = str.length;
let maxStr = "";
// 获取所有可能
for (let i = 0; i < len; i++) {
let temp = "";
for (let j = i; j < len; j++) {
if (!temp.includes(str[j])) {
temp += str[j];
} else {
break;
}
}
if (temp.length > maxStr.length) {
maxStr = temp;
}
}
console.log(maxStr);
from fe-interview.
str.length?
from fe-interview.
function maxStrLen(str) {
if (!str) return 0;
let arr = str.split('')
let max = 0
for (i = 0; i < str.length; i++) {
arr[i] = 'pass'
let index = arr.indexOf(str[i])
if (index !== -1 && index - i > max) max = index - i
}
return max
}
maxStrLen('pwwkew')
maxStrLen('abcabcbb')
maxStrLen('bbbbb')
maxStrLen('123456125')
maxStrLen('123 45 6125')
maxStrLen('')
from fe-interview.
/**
* @param {string} s
* @return {number}
*/
function lengthOfLongestSubstring (str) {
if (str.length === 0 || str.length === 1) {
return str.length;
}
let start = 0;
let end = 0;
let maxStr = str[0];
let location = {
[str[0]]: 0
}
for (let index = 1; index < str.length; index++) {
const char = str[index];
if (typeof location[char] !== 'undefined') {
if (location[char] >= start) {
start = location[char] + 1;
}
}
location[char] = index;
end++;
if ((end - start + 1) > maxStr.length) {
maxStr = str.substring(start, end + 1);
}
}
return maxStr.length;
}
from fe-interview.
这题目没看懂
from fe-interview.
/**
* [noRepeaMaxLenStr description]
* @param {String} str [字符串]
* @return {[type]} [description]
*/
function noRepeaMaxLenStr(str = '') {
let arr = [...str],
start = end = arr.shift(),
resArr = [],
len = 0;
str = '';
for (let v of arr) {
if (v === start) {
resArr.push(end);
start = end = v;
} else {
start = v;
end+= v;
}
}
resArr.push(end);
console.log(resArr);
for(let v of resArr) {
if (len < v.length) {
len = v.length;
str = v;
}
}
console.log({len, str})
return {len, str};
}
noRepeaMaxLenStr('abbcdeefg');
noRepeaMaxLenStr('aaabcdeeeff');
noRepeaMaxLenStr('abccdeffgg');
from fe-interview.
const longestLength = (string) => {
const length = string.length;
const recordArr = [];
for(let i = 0; i < length; i++) {
const arr = string.split('');
const emptyArr = [];
for(let j = 0; j < length - i; j++) {
emptyArr.push(arr[i + j]);
const newSetArr = [...new Set(emptyArr)];
if(newSetArr.length !== emptyArr.length) {
recordArr.push(newSetArr.length)
break;
} else if(j === length - i - 1) {
recordArr.push(newSetArr.length)
}
}
}
return Math.max.apply(null, recordArr);
}
console.log('this is',longestLength('1lksdmfkdfasdfasdf20393'));
from fe-interview.
function maxNoRepeatStr(str){
if(typeof str !== 'string') return console.warn("Expected string, But got " + typeof str);
let noRepeatStr = '';
let lastIndex = str.length - 1;
let max = 0;
do {
const last = str[lastIndex], next = str[lastIndex-1];
last === next?
noRepeatStr = '':
noRepeatStr += last;
max = Math.max(max, noRepeatStr.length + 1);
} while (--lastIndex);
return max;
}
console.assert(maxNoRepeatStr("loddktdji") === 6);
console.assert(maxNoRepeatStr("dvdf") === 4);
console.assert(maxNoRepeatStr("adfafwefffdasdcx") === 8);
from fe-interview.
不推荐,时间和空间复杂度都太高。
let n = 0;
function getSubStrings(str, length) {
const subStrings = [];
for(let i = 0; i + length <= str.length; i++) {
n = n + 1;
subStrings.push(str.slice(i, i + length));
}
return subStrings;
}
function longestSubString(str, length) {
const noRepeating = getSubStrings(str, length).some((str) => {
n = n + 1;
const flag = new Set(str.split('')).size === length;
if (flag) {
console.log('find longest without repeating sub string:', str);
return true;
}
return false;
});
if (noRepeating) {
return length;
}
return longestSubString(str, length - 1);
}
console.log('the length is:', longestSubString('ABDEFGABEF', 'ABDEFGABEF'.length));
console.log('loop count:', n);
from fe-interview.
/*8
* 思路:1.使用动态创建对象的方式,将每个字符当作对象的属性名。在设置一个属性名之前,看看能否取到该属性名的值,
* 如果没有则设置属性为该字符,且赋值为1。如果一旦取到了就说明已经设置过该属性,直接得到长度
*/
const getLongestStrLength = (s) => {
let obj = {}
for (let i = 0; i < s.length; i ++) {
if (obj[s[i]] === 1) {
return i
} else {
obj[s[i]] = 1
}
}
return '没有'
}
from fe-interview.
let str='11abcdef1e111aabbcef'
let lengthTag = 1
let maxLengthArr = []
for(let i=1;i<str.length;i++){
if(str[i]!==str[i-1]){
lengthTag++;
}else{
maxLengthArr.push(lengthTag)
lengthTag = 1;
}
}
console.log(Math.max(...maxLengthArr)) // 10
from fe-interview.
var str = 'Lorem,ipsumdolorsitametconsectetura'
const getUniqueIndex = function (str) {
var obj = {}
for (const key in str) {
var letter = str[key]
if (obj[letter]) return key
obj[letter] = 1
}
return str.length
}
var index = getUniqueIndex(str)
console.log(index)
from fe-interview.
function longNoRepeatLongth(str: string): number {
let max = 0;
for (let i = 0; i < str.length; i++) {
let strTemp = ''
for (let j = i; j < str.length; j++) {
if (strTemp.includes(str[j])) {
break;
} else {
strTemp += str[j]
}
}
max = strTemp.length >= max ? strTemp.length : max;
}
return max;
}
function longNoRepeatLongth2(str: string): number {
let temp = '';
let arr = str
let max = 0;
for (let i = 0; i < arr.length; i++) {
if (!temp.includes(arr[i])) {
temp += arr[i]
} else {
max = temp.length >= max ? temp.length : max;
temp = arr[i];
}
}
max = temp.length >= max ? temp.length : max;
return max;
}
from fe-interview.
// 第 4 题:字符串出现的不重复最长长度
function lengthOfLongestSubstring(s) {
let max = 0; // 最长长度
let dict = {}; // 纪录当前字符串的下标位置
let i = 0; // 遍历 字符串s 的指针
let cur = 0; // 当前无重复字符串的指针
while (i < s.length) {
if (!dict[s[i]]) {
dict[s[i]] = String(i); // 再次遍历, i 在 字符串s 的位置
i++;
cur++;
} else {
i = dict[s[i]] + 1;
cur = 0;
dict = {};
}
if (cur > max) {
max = cur;
}
}
return max;
}
console.log(lengthOfLongestSubstring("loddktdji"));
console.log(lengthOfLongestSubstring("dvdf"));
console.log(lengthOfLongestSubstring("adfafwefffdasdcx"));
from fe-interview.
const getLongestStrLen = (s) => {
const len = s.length;
let str = '';
let res = 0;
let char, index;
for(let i=0; i<len; i++){
char = s.charAt(i);
index = str.indexOf(char);
if(index === -1){
str += char;
res = res < str.length ? str.length : res;
} else{
str = str.substr(index + 1) + char;
}
}
return res;
}
from fe-interview.
滑动窗口
var lengthOfLongestSubstring = function(s) {
let len = s.length
let left = 0 //窗口左指针
let right = 0 //窗口右指针
let map = {} //无重复字符串的map
let maxLen = 0
while(right < len){
//遇到重复字符串左指针左移缩小窗口
while(map[s[right]]){
delete map[s[left]]
left++
}
// 右指针右移扩大窗口,并记录数据到无重复的map里
map[s[right]] = 1
right++
maxLen = Math.max(maxLen,right - left)
}
return maxLen
}
from fe-interview.
/** * @param str {string} * 使用快慢双指针;对比快慢指针所指的值,如果不相等则计数加1,否则计数重置 */ function maxNoRepeatStr (str) { // 为空时,直接返回0 if (!str) { return 0; } // 慢指针指向0 let slow = 0; // 快指针指向1 let fast = 1; // 计数默认为1 - 至少一个不重复 let count = 1; // 当快指针走到结尾时停止 while (str.length > fast) { // 不相等,计数加1 if (str[slow] !== str[fast]) { count++; } else { // 重置为1 count = 1; } // 快慢指针同时走 slow++; fast++; } return count; } console.assert(maxNoRepeatStr("loddktdji") === 6); console.assert(maxNoRepeatStr("dvdf") === 4); console.assert(maxNoRepeatStr("adfafwefffdasdcx") === 7);
console.assert(maxNoRepeatStr("asyncDataloddktdji") === 6); // true
from fe-interview.
function lenSetStr (str) { return [...new Set(str)].length }不会调整格式凑合看
审题不对
from fe-interview.
// 'a'
let str = 'sfdjlnmvsfdskljflskfbsfdsslkdkkk'
// 判重
function hasRepeat(str) {
let str1 = Array.from(new Set(str))
return str1.length !== str.length
}
function findMaxDiffSub(allStr) {
let maxArr = []
for (let sliceLength = 0, len = allStr.length; sliceLength < len; sliceLength++) {
// sliceLength 切割长度
for(let index=0; index < allStr.length - sliceLength; index++){
let subStr = allStr.slice(index, index+sliceLength)
if(!hasRepeat(subStr)) {
maxArr = subStr;
}
}
}
console.log('max length is', maxArr.length)
console.log('max arr is', maxArr)
}
findMaxDiffSub(str)
from fe-interview.
// 快慢指针
// 判重
function hasRepeat(str) {
let str1 = Array.from(new Set(str));
return str1.length !== str.length;
}
function maxNoRepeatStr(str) {
let slow = 0; // 慢指针
let fast = 1; // 快指针
let maxStr = '';
let subStr = '';
// 扫描整个字符串
while (fast <= str.length) {
subStr = str.substring(slow, fast);
// 是否重复?
if (!hasRepeat(subStr)) {
if (subStr.length > maxStr.length) {
maxStr = subStr;
}
fast++;
} else {
// 有重复
slow++;
}
}
console.log(max norepeat string is ${maxStr}, length is ${maxStr.length}
);
}
// test
const testStr = 'sfdjlnmvsfdskljflskfbsfdsslkdkkk';
const testStr1 = '121';
const testStr2 = '1';
console.log(maxNoRepeatStr(testStr));
console.log(maxNoRepeatStr(testStr1));
console.log(maxNoRepeatStr(testStr2));
from fe-interview.
滑动窗
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function (s) {
let
finalLength = 0,
tempLength = 0,
// window的结构为key(字母表示):value(字母下标)
window = {},
left = 0,
right = 0;
while (left < s.length && right < s.length) {
// 如果记录表中没有,或记录的位置不在滑动窗口内,则继续扩张
if (window[s[right]] === undefined || window[s[right]] < left) {
window[s[right]] = right;
tempLength = right - left + 1;
finalLength = finalLength >= tempLength ? finalLength : tempLength;
}
// 否则,收缩窗口至重复的下一个
else {
left = window[s[right]] + 1;
window[s[right]] = right;
tempLength = right - left + 1;
}
right++;
}
return finalLength;
};
from fe-interview.
function strLen(str) {
if(typeof str !== 'string') {
throw TypeError(str + 'is not a string')
}
// 如果长度小于等于一 直接返回
if(str.length < 2) return str.length;
const strArr = str.split('')
// 数组去重
const newArr = Array.from(new Set(strArr))
return newArr.length;
}
from fe-interview.
const noRepeatStrLen = (s) => {
let tmpStr = '';
for (let i = 0; i < s.length; i++) {
if (tmpStr.indexOf(s[i]) === -1) {
tmpStr += s[i];
} else {
return tmpStr;
}
}
return tmpStr;
}
console.log(noRepeatStrLen('abcabc'));
console.log(noRepeatStrLen('abcd123'));
console.log(noRepeatStrLen('aa24'));
from fe-interview.
题目竟然没读懂。。。
from fe-interview.
function strLength (str) {
let index = 1
let stack = ''
let maxStr = 0
let same = 0
while (index <= str.length) {
let text = str.substring(index, 0)
if(stack.substr(stack.length - 1, 1) === text.substr(text.length - 1, 1)) {
same = text.length - 1
if(stack.length > maxStr) {
maxStr = stack.length
}
} else {
stack = text.substring(same)
}
index ++
}
return stack.length > maxStr ? stack.length : maxStr
}
把自己的拿上来,看看跟大佬的差距有多少
from fe-interview.
function maxRepeat(s){
let list=Array.from(s);
let map=new Map();
let max=0;
for(let i=0;i<list.length;i++){
if(map.has(list[i])){
map.set(list[i],map.get(list[i])+1);
}else{
map.set(list[i],1);
}
if(map.get(list[i])>max){
max=map.get(list[i]);
}
}
return max;
}
console.log(maxRepeat("aaabbbbccccc"));
from fe-interview.
function lengthOfLongestSubstring(s) {
const arr = [...s];
let obj = {};
for(let i=0; i<arr.length; i++){
if(!obj[arr[i]]) {
obj = { ...obj, [arr[i]]: 1};
} else {
obj[arr[i]]++;
}
}
const arrValues = Object.values(obj);
const max = Math.max(...arrValues);
return max;
}
from fe-interview.
maxLength('abbba1234567')就不行了
from fe-interview.
function maxlength(str) {
if(typeof str != 'string') {
return '不是字符串';
}
var arr = [...str];
var res = [];
var max = 0;
while(arr.length > 0) {
let value = arr.shift();
if(!res.includes(value)) {
res.push(value)
} else {
let index = res.findIndex(function(currentValue, index, arr) {
return currentValue == value
});
max = Math.max(max, res.length)
res.push(value)
if(res[index] == value) {
res = res.slice(index + 1)
}
}
}
max = Math.max(max, res.length)
console.log(max)
}
maxlength('abbba1234567')
from fe-interview.
const lengthOfLongestSubstring = function (s) {
let map = new Map();
let i = -1
let res = 0
let n = s.length
for (let j = 0; j < n; j++) {
if (map.has(s[j])) {
i = Math.max(i, map.get(s[j]))
}
res = Math.max(res, j - i)
map.set(s[j], j)
}
return res
};
console.log(lengthOfLongestSubstring("abcabcdeabcd"))
from fe-interview.
function lengthOfLongestSubstring(s){
let i = 0
let j = 0
let n = s.length
let set = new Set()
let max = 0
while(j < n){
while(set.has(s[j])){
set.delete(s[i++])
}
set.add(s[j])
j++
max = Math.max(max, j - i)
}
return max
}
from fe-interview.
function maxLenNoRepeatStr(str) {
if (str.length < 2) return str.length;
let strSplitStr = '';
let maxLen = 0;
for(let s of str) {
if (strSplitStr.indexOf(s) === -1) {
strSplitStr += s;
} else {
maxLen = Math.max(maxLen, strSplitStr.length);
strSplitStr = '';
}
}
return Math.max(maxLen, strSplitStr.length);
};
from fe-interview.
function lengthOfLongestSubString (str){
let obj = {};
for(let i=0;i<str.length;i++){
let ele = str[i]
if(!obj.hasOwnProperty(ele)){
obj[ele] = 1;
}else{
obj[ele]+=1
}
}
// 有需求还可以计算出现最多的字符
return Object.keys(obj).length
}
lengthOfLongestSubString('asdfasewr')
from fe-interview.
function maxSubString(str) {
var temp, max_str = "";
str.match(/(\w)\1+/g).forEach(function (item) {
temp = str.split(item);
str = temp[1];
if (temp[0].length > max_str.length) {
max_str = temp[0];
}
});
return max_str;
}
from fe-interview.
function Fn(str) {
let len = 0;
let arr = [];
let j = 0;
str = str.split('')
for (let i = 0; i < str.length; i++) {
for (let l = 0; l < str.slice(j).length; l++) {
const element = str.slice(j)[l];
if (!arr.includes(element)) {
arr.push(element);
} else {
len = len > arr.length ? len : arr.length;
arr = [];
j++;
break;
}
}
}
console.log(len);
return len
}
这道题不能改变str的序列吧 是我的理解有问题吗
from fe-interview.
/**
* 最长无重复子串
* 移动窗口法
* @param {*} str
*/
function maxLength(str) {
const set = new Set();
let max = ""; // 最大子串
let left = 0; // 左指针left,右指针i
for (let i = 0; i < str.length; i++) {
const char = str[i];
// 有重复,左指针移到右指针,清空set
if (set.has(char)) {
left = i;
set.clear();
} else {
// 如果窗口扩大了,就记录新的子串
if (i - left + 1 > max.length) {
max = str.slice(left, i + 1);
}
}
set.add(char);
}
console.log(max);
}
maxLength("abcabcdagaiuytaabb"); // 输出aiuyt
from fe-interview.
function findMaxSizeDiffOfStr(strInput){
if(typeof strInput !== 'string') throw new Error("Pls enter a string...")
if(strInput === ""){
return 0;
}
let strLen = strInput.length;
let tempStr = [];
for(var i = 1 ; i < strLen ; i++){
for(var j = i ; j < strLen ; j++){
if(strInput.substring(i-1,j).indexOf(strInput.charAt(j) ) === -1){
tempStr.push(strInput.substring(i-1,j+1));
// maxSize = tempStr.length;
}else{
break;
}
}
}
let tempSize = tempStr.map(item=>item.length)
console.log(tempSize)
console.log(Math.max.apply(null,tempSize))
return Math.max.apply(null,tempSize);
}
// findMaxSizeDiffOfStr("abccccfedggggggg");
// findMaxSizeDiffOfStr("pwwkew");
from fe-interview.
function fn(s) {
let res = ''
let max = 0
for (let c of s) {
let index = res.indexOf(c)
if (index === -1) {
res += c
} else {
res = res.slice(index + 1) + c
}
max = Math.max(res.length, max)
}
return max
}
from fe-interview.
function noRepeat(str) {
let map = new Map()
let result = 0
for (let i = 0; i < str.length; i++) {
if (map.has(str[i])) {
i = map.get(str[i])
map.clear()
} else {
map.set(str[i], i)
}
result = Math.max(result, map.size)
}
return result
}
// 测试
let str = 'sosfsdfjkttu'
console.log(noRepeat(str));
from fe-interview.
Related Issues (20)
- Day378:说一下什么是 Http 协议无状态?怎么解决 Http 协议无状态?
- Day379:如果让你来实现一个前端监控系统,应该考虑什么?如何去实现?
- Day380:实现一个系统,统计前端页面性能、页面 JS 报错、用户操作行为、PV/UV、用户设备等消息,并进行必要的监控报警。方案如何设计,用什么技术点,什么样的系统架构,难点会在哪里? HOT 3
- Day381:说一下 JavaScript 严格模式下有哪些不同?
- Day382:说一下 setTimeout 和 setInterval 的区别,包含内存方面的分析?
- Day383:说下 React 的 useEffect、useCallback、useMemo HOT 2
- Day384:JavaScript 中如何实现一个类?怎么实例化这个类? HOT 2
- Day385:在一个 DOM 上同时绑定两个点击事件:一个用捕获,一个用冒泡。事件会执行几次?先执行冒泡还是捕获? HOT 9
- Day386:写一个通用的事件侦听器函数 HOT 3
- 定时函数 HOT 1
- 小程序不维护了吗? HOT 10
- --
- 小程序里面的内容还有其他地方能学习吗
- 求小程序哇!!不然学习效率太低了 HOT 1
- 现在还能在哪里看题目答案吗?小程序关闭了😭😭 HOT 1
- #### 1)为什么会有Event Loop
- > > > @Genzhen 请教一下大佬,如果在render里面结构赋值也会影响性能吗?比如 const { page, size } = this.state这种的? HOT 1
- 考察原型链
- issue路径错误,提不了pr,可见下图
- vue中&nextTick的原理
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fe-interview.