香奈儿网站建设,外发加工网会员,什么行业必须做网站,微商城平台排行榜前十名文章目录 100166. 检查按位或是否存在尾随零题目题意代码 100185. 找出出现至少三次的最长特殊子字符串 I题目思路代码 100184. 找出出现至少三次的最长特殊子字符串 II 100166. 检查按位或是否存在尾随零
题目 题意
这里题目要求的是或运算#xff0c;所以原数组中只需要有… 文章目录 100166. 检查按位或是否存在尾随零题目题意代码 100185. 找出出现至少三次的最长特殊子字符串 I题目思路代码 100184. 找出出现至少三次的最长特殊子字符串 II 100166. 检查按位或是否存在尾随零
题目 题意
这里题目要求的是或运算所以原数组中只需要有两个或者两个以上的数字是满足存在一个尾随零条件即可
代码
class Solution {
public:bool hasTrailingZeros(vectorint nums) {int nnums.size();int ans0;for(int i0;in;i)if(nums[i]%20)ans;if(ans2)return true;return false;}
};100185. 找出出现至少三次的最长特殊子字符串 I
题目 思路
这个问题可以通过先统计字符串中相同字母的连续出现长度然后按长度从大到小排序。接下来按照规则处理这些长度。
从最长的特殊子串中取三个长度均为 (a[0] - 2) 的特殊子串。 从最长和次长的特殊子串中取三个长度一样的特殊子串 如果 a[0] a[1]取三个长度均为 (a[0] - 1) 的特殊子串。 如果 a[0] a[1]取三个长度均为 a[1] 的特殊子串从最长中取两个从次长中取一个。 即为 min(a[0] - 1, a[1])。 从最长、次长、第三长的特殊子串中各取一个长为 a[2] 的特殊子串。 这三种情况取最大值即为 max(a[0] - 2, min(a[0] - 1, a[1]), a[2])。 最后取每一组的最大值即为答案。如果答案是 0返回 -1。
代码
class Solution {
public:int maximumLength(string s) {vectorint charGroups[26];int counter 0, length s.length();for (int i 0; i length; i) {counter;if (i 1 length || s[i] ! s[i 1]) {charGroups[s[i] - a].push_back(counter);counter 0;}}int result 0;for (auto group: charGroups) {if (group.empty()) continue;sort(group.rbegin(), group.rend());group.push_back(0);group.push_back(0); // 假设还有两个空串result max({result, group[0] - 2, min(group[0] - 1, group[1]), group[2]});}return result ? result : -1;}
};
100184. 找出出现至少三次的最长特殊子字符串 II
做法同上