当前位置:网站首页>Leetcode 1208. Make strings as equal as possible

Leetcode 1208. Make strings as equal as possible

2022-06-23 04:36:00 I'm not xiaohaiwa~~~~

Give you two strings of the same length ,s and t.

take s No i Four characters change to t No i Two characters need to be |s[i] - t[i]| The cost of ( The cost may be 0), That's two characters ASCII The absolute value of the difference between code values .

The maximum budget for changing strings is maxCost. When converting strings , The total cost should be less than or equal to the budget , This also means that string conversion may be incomplete .

If you can put s The substring of is converted to it in t The substring corresponding to , Then returns the maximum length that can be converted .

If s There are no substrings that can be converted to t The substring corresponding to , Then return to 0.

Example 1:

 Input :s = "abcd", t = "bcdf", maxCost = 3
 Output :3
 explain :s  Medium  "abc"  It can be  "bcd". The cost is  3, So the maximum length is  3.

Example 2:

 Input :s = "abcd", t = "cdef", maxCost = 3
 Output :1
 explain :s  If you want any character in to become  t  The corresponding characters in , The cost is  2. therefore , Maximum length is  1.

Example 3:

 Input :s = "abcd", t = "acde", maxCost = 0
 Output :1
 explain :a -> a, cost = 0, The string has not changed , So the maximum length is  1.
 

Tips :

  • 1 <= s.length, t.length <= 10^5
  • 0 <= maxCost <= 10^6
  • s and t It's all lowercase letters .

source : Power button (LeetCode)
link :https://leetcode.cn/problems/get-equal-substrings-within-budget
Copyright belongs to the network . For commercial reprint, please contact the official authority , Non-commercial reprint please indicate the source .
Code:

class Solution {
    
public:
    int equalSubstring(string s, string t, int maxCost) {
    
        vector<int>vec;
        for(int i=0;i<s.length();i++)
        {
    
            vec.push_back(abs(s[i]-t[i]));
            
        }
        int cnt=0;
        for(int i=0;i<vec.size();i++)
        {
    
            int sum=0;
            int res=0;
            for(int j=i;j<vec.size();j++)
            {
    
                sum+=vec[j];
                if(sum<=maxCost)
                {
    
                    res++;
                    cnt=max(cnt,res);
                }
                else
                {
    
                    cnt=max(cnt,res);
                    break;
                }
            }
            
            
        }
        
        return cnt;
        
    }
};
原网站

版权声明
本文为[I'm not xiaohaiwa~~~~]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/174/202206222308073588.html