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;
};