Leetcode-3702-按位异或非零的最长子序列
题目3702. 按位异或非零的最长子序列 给你一个整数数组 nums,请你返回 nums 中最长的子序列的长度,使得该子序列所有元素的按位异或结果非零。如果不存在这样的子序列,返回 0。 子序列 是指从原数组中删除一些(或不删除)元素,且不改变剩余元素顺序得到的非空数组。 示例 1: 123输入:nums = [1,2,3]输出:2解释:最长的按位异或非零子序列是 [2,3](2 ^ 3 = 1)或 [1,2](1 ^ 2 = 3),长度为 2。 示例 2: 123输入:nums = [0,0,0]输出:0解释:任何子序列的异或结果都是 0,不存在非零异或的子序列。 示例 3: 123输入:nums = [5]输出:1解释:整个数组的异或结果为 5,非零,长度为 1。 提示: 1 <= nums.length <= 10^5 0 <= nums[i] <= 10^9 思路异或的核心性质本题的关键在于利用异或运算的以下性质: 自反性:a ^ a = 0,任何数与自身异或得 0。 恒等性:a ^ 0 = a,任何数与 0 异或等于自身。 交换律与结...
Leetcode-3090-每个字符最多出现两次的最长子字符串
题目3090. 每个字符最多出现两次的最长子字符串 给你一个字符串 s,请返回满足以下条件的最长子字符串的长度: 每个字符最多出现两次。 示例 1: 123输入:s = "bcbbbcba"输出:4解释:以下子字符串长度为 4,并且每个字符最多出现两次:"bcba"(b 出现 2 次,c 出现 1 次,a 出现 1 次)。 示例 2: 123输入:s = "aaaa"输出:2解释:以下子字符串长度为 2,并且每个字符最多出现两次:"aa"。 提示: 2 <= s.length <= 100 s 仅包含小写英文字母。 思路滑动窗口本题是 3. 无重复字符的最长子串 的变体,只需把「每个字符最多出现 1 次」放宽为「最多出现 2 次」,套用同一个不定长滑动窗口模板: right 不断右移,将新字符加入窗口,频次 +1; 若该字符频次超过 2,说明窗口不合法,从 left 开始收缩:移除 left 处字符,频次 -1,left++,直到该字符频次 ≤ 2; 此时窗口 [left, ...
Leetcode-3499-操作后最大活跃区段数-I
题目3499. 操作后最大活跃区段数 I 给你一个二进制字符串 s,其中: '1' 表示一个活跃区段。 '0' 表示一个非活跃区段。 定义一次操作分为两个步骤: 选择一个两侧都是 '0' 的连续 '1' 区块,将其全部变为 '0'。 然后,选择一个两侧都是 '1' 的连续 '0' 区块,将其全部变为 '1'。 注意:处理时在 s 前、后各添加一个虚拟的 '1'(即等效字符串 t = '1' + s + '1'),两个虚拟 '1' 不计入最终结果。 你最多可以执行 一次 操作。请你计算并返回操作后活跃区段的最大数量。 示例 1: 123输入:s = "01"输出:1解释:字符串中没有两侧都是 '0' 的 '1' 区块,无法执行操作。 示例 2: 1234567输入:s = "0100"输出:4解释:- 虚...