LeetCode第390场周赛题解(c++)

真的无语了,早上怎么都提交不了,显示未知错误。。。

结果晚上就可以提交了。唉

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] 。

你可以对数组执行以下 任意 操作 任意 次数(可能为零):

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值