跳到主要内容

1371.每个元音包含偶数次的最长子字符串

链接:1371.每个元音包含偶数次的最长子字符串
难度:Medium
标签:位运算、哈希表、字符串、前缀和
简介:给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标 index 值。

题解 1 - javascript

  • 编辑时间:2020-05-20
  • 执行用时:120ms
  • 内存消耗:40MB
  • 编程语言:javascript
  • 解法介绍:利用奇数-奇数=偶数,偶数-偶数=奇数进行前缀和的判断局部字符串,再利用位运算压缩字符串数量。
/**
* @param {string} s
* @return {number}
*/
var findTheLongestSubstring = function (s) {
const len = s.length;
const pos = new Array(1 << 5).fill(-1);
const statusCache = {
a: 1 << 0,
e: 1 << 1,
i: 1 << 2,
o: 1 << 3,
u: 1 << 4,
};
let ans = 0,
status = 0;
pos[0] = 0;
for (let i = 0; i < len; ++i) {
const c = s[i];
status = statusCache[c] ? statusCache[c] ^ status : status;
if (~pos[status]) ans = Math.max(ans, i + 1 - pos[status]);
else pos[status] = i + 1;
}
return ans;
};