做網(wǎng)站的回扣什么是seo?
1794.【軟件認(rèn)證】最長的指定瑕疵度的元音子串
這個(gè)例題,是滑動(dòng)窗口中長度不定求最大的題目,在看題之前可以先看一下【leetcode每日一題】【滑動(dòng)窗口長度不固定】案例。
題目描述
定義:開頭和結(jié)尾都是元音字母(aeiouAEIOU
)的字符串為 元音字符串 ,其中混雜的非元音字母數(shù)量為其 瑕疵度 。比如:
- “a” 、 “aa”是元音字符串,其瑕疵度都為0
- “aiur”不是元音字符串(結(jié)尾不是元音字符)
- “abira”是元音字符串,其瑕疵度為2
給定一個(gè)字符串,請(qǐng)找出指定瑕疵度的最長元音字符子串,并輸出其長度,如果找不到滿足條件的元音字符子串,輸出0
。
子串:字符串中任意個(gè)連續(xù)的字符組成的子序列稱為該字符串的子串。
思路
窗口里的瑕疵度的字母含量只能是k,求最大長度,如果大于k縮小窗口,但是如果<k
,因此我們需要判斷一下,符合條件的才去更新長度。
以下是一個(gè)實(shí)現(xiàn)了上述算法的 JavaScript 示例代碼:
const getLongestFlawedVowelSubstrLen = (flaw, input) => {let count = 0let res = 0let left = 0let set = new Set(['a','e','i','o','u']);for (let i = 0; i < input.length; i++) {// 向右擴(kuò)大窗口,維護(hù)窗口中的瑕疵度if (!set.has(input[i].toLowerCase())) {count++}// 縮小窗口while (count > flaw) {if (!set.has(input[left].toLowerCase())) {count--;}left++;}// 滿足條件的時(shí)候,更新結(jié)果。if(set.has(input[i].toLowerCase())&&set.has(input[left].toLowerCase())&&count===flaw){res = Math.max(res, i-left+1)}}return res;}
978 最長湍流子數(shù)組
給定一個(gè)整數(shù)數(shù)組 arr ,返回 arr 的 最大湍流子數(shù)組的長度 。
如果比較符號(hào)在子數(shù)組中的每個(gè)相鄰元素對(duì)之間翻轉(zhuǎn),則該子數(shù)組是 湍流子數(shù)組 。
/*** @param {number[]} arr* @return {number}*/
var maxTurbulenceSize = function(arr) {let simple = [-2];for (let i = 1; i < arr.length; i++) {if (arr[i] > arr[i - 1]) {simple.push(1);} else if (arr[i] < arr[i - 1]) {simple.push(-1);} else {simple.push(0);}}let left = 0;let max = 1;for(let i = 1; i < simple.length; i++){if(simple[i] != 0 && simple[i] != simple[i-1]){max = Math.max(max, i - left + 1);}else{left++;simple[left] = -2;i = left;}}return max;};