首页 > 其他分享 >leetcode 1208. 尽可能使字符串相等

leetcode 1208. 尽可能使字符串相等

时间:2024-12-07 19:53:45浏览次数:7  
标签:right 1208 int nowCost resLenth 字符串 size leetcode left

1208. 尽可能使字符串相等

其中,字符串 s 和 t 只包含小写字母

法一:使用额外空间

class Solution {
public:
    int equalSubstring(string s, string t, int maxCost) {
        int size = s.size();
        vector<int> cost(size);
        for(int i = 0;i < size;i++)  cost[i] = abs(s[i]-t[i]);

        int left = 0,right = 0,resLenth = 0,nowCost = 0;
        for(right = 0;right < size;right++){
            nowCost += cost[right];
            if(nowCost > maxCost){
                resLenth = max(resLenth,right-left);
                while(nowCost > maxCost)  nowCost -= cost[left++];            
            }
        }
        return max(resLenth,right-left);
    }
};

法二:不使用额外空间

class Solution {
public:
    int equalSubstring(string s, string t, int maxCost) {
        int size = s.size();
        int left = 0,right = 0,resLenth = 0,nowCost = 0;
        for(right = 0;right < size;++right){
            nowCost += abs(s[right]-t[right]);
            if(nowCost > maxCost){
                resLenth = max(resLenth,right-left);
                while(nowCost > maxCost){
                    nowCost -= abs(s[left]-t[left]);
                    ++left;
                }           
            }
        }
        return max(resLenth,right-left);
    }
};

 

标签:right,1208,int,nowCost,resLenth,字符串,size,leetcode,left
From: https://www.cnblogs.com/uacs2024/p/18592599

相关文章

  • leetcode 1493. 删掉一个元素以后全为 1 的最长子数组
    1493.删掉一个元素以后全为1的最长子数组法一:递推classSolution{public://在删掉元素的结果数组中,最长的且只包含1的非空子数组存在两种情况://1.这个子数组在原数组中本身就是连续的,无论删或者不删其他的元素,它都是最长的且只包含1的非空子数组;//2.这个子数组原......
  • 205. 同构字符串
      给定两个字符串 s 和 t ,判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符......
  • 【Leetcode Top 100】146. LRU 缓存
    问题背景请你设计并实现一个满足LRU(最近最少使用)缓存约束的数据结构。实现LRUCache类:LRUCache(intcapacity)以正整数作为容量cap......
  • 【Leetcode 每日一题】688. 骑士在棋盘上的概率
    问题背景在一个n×nn\timesnn×n的国际象棋棋盘上,一个骑士从单元格......
  • LeetCode 263[丑数]
    题目链接LeetCode263[丑数]详情实例提示题解思考题目对丑数的定义:只包含质因数2、3、5的正整数条件一:只包含质因数2、3、5条件二:正整数 对于条件二很好筛选:如果给定值n小于1,即给定值为0或者是负数,此时条件二不满足,则返回false该部分的代码实现如下:......
  • 写一个方法把科学计数法转换成数字或者字符串
    functionscientificToDecimal(scientificNotation){//Handlecaseswhereinputisalreadyanumberoravalidnumericstringif(typeofscientificNotation==='number'){returnscientificNotation;}constnumStr=String(scientificN......
  • leetcode3288 最长上升路径的长度
    给定长度为n的二维数组{x[i],y[i]}和一个整数k,其中0<=k<n,从中选中若干个点排序构成序列,求最长的点序列满足x[i]<x[i+1]并且y[i]<y[i+1],要求第k个点必须选择,返回最长序列的长度。1<=n<=1E5;0<=x[i],y[i]<=1E9;各个点互不相同分析:可以拆分成如下几个子任务:(1)求一维数组的lis的长度......
  • leetcode-1193. 每月交易 I
     建表语句:CreatetableIfNotExistsTransactions(idint,countryvarchar(4),stateenum('approved','declined'),amountint,trans_datedate)TruncatetableTransactionsinsertintoTransactions(id,country,state,amount,trans_date)......
  • leetcode 3266. K 次乘运算后的最终数组 II
    3266.K次乘运算后的最终数组II给你一个整数数组 nums ,一个整数 k  和一个整数 multiplier 。你需要对 nums 执行 k 次操作,每次操作中:找到 nums 中的 最小 值 x ,如果存在多个最小值,选择最 前面 的一个。将 x 替换为 x*multiplier 。k 次操作以......
  • leetcode 3. 无重复字符的最长子串
    3.无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。 滑动窗口模板//外层循环扩展右边界,内层循环扩展左边界for(intl=0,r=0;r<n;r++){//当前考虑的元素while(l<=r&&check()){//区间[left,right]不符......