真的无语了,早上怎么都提交不了,显示未知错误。。。
结果晚上就可以提交了。唉
100245.每个字符最多出现两次的最长子字符串
给你一个字符串 s
,请找出满足每个字符最多出现两次的最长子字符串,并返回该
子字符串
的 最大 长度。
示例 1:
输入: s = "bcbbbcba"
输出: 4
解释:
以下子字符串长度为 4,并且每个字符最多出现两次:"bcbbbcba"
。
示例 2:
输入: s = "aaaa"
输出: 2
解释:
以下子字符串长度为 2,并且每个字符最多出现两次:"aaaa"
。
提示:
2 <= s.length <= 100
s
仅由小写英文字母组成。
这个代码是我自己写的,应该没有那些大佬写的简洁。
思路就是遍历所有可能的字符串,在遍历过程中,终止条件有两个:
- 当unordered_map,char ,int> charCount里面,某个字符个数>=3
- 当该子字符串已经到原字符串的结尾,虽然没有某个字符个数>=3,但是应该结束
- 在这2种情况下,每次进行maxStr的更新
#include<iostream>
#include<unordered_map>
using namespace std;
int maximumLengthSubstring(string s) {
int len=s.length();
int maxStr=0;
for(int i=0;i<len;i++){
unordered_map<char,int> charCount;
for(int j=i;j<len;j++){
char currChar=s[j];
charCount[currChar]++;
if(charCount[currChar]>=3){
maxStr=max(maxStr,j-i);
break;
}
if(j==len-1){
//最后面了
maxStr=max(maxStr,j-i+1);
}
}
}
return maxStr;
}
int main(){
string s="aaaa";
int a=maximumLengthSubstring(s);
cout<<a;
return 0;
}
100228.执行操作使数据元素之和大于等于K
给你一个正整数 k
。最初,你有一个数组 nums = [1]
。
你可以对数组执行以下 任意 操作 任意 次数(可能为零):