C++ 中的最小字符串
c++server side programmingprogramming
假设我们有两个长度相同的字符串 s 和 t,并且都是小写字母。假设我们首先将 s 重新排列成任意顺序,然后计算将 s 转换为 t 所需的最小更改次数。
因此,如果输入为 s = "eccynue",t = "science",那么输出将为 2,就像我们重新排列 "eccynue" 一样。改为"yccence",然后将 y 替换为 s,将第二个 c 替换为 i,则结果为"science"。
为了解决这个问题,我们将遵循以下步骤 −
ret := 0
定义两个数组 cnt1 和 cnt2,分别用于保存 s 的频率和 t 的频率
初始化 i := 0,当 i < 26 时,更新(将 i 加 1),执行 −
ret := ret + max(cnt1[i] - cnt2[i], 0)
return ret
让我们看看下面的实现以便更好地理解 −
示例
#include <bits/stdc++.h> using namespace std; class Solution { public: int solve(string s, string t) { int ret = 0; vector <int> cnt1(26); vector <int> cnt2(26); for(int i = 0; i < s.size(); i++){ cnt1[s[i] - 'a']++; } for(int i = 0; i < t.size(); i++){ cnt2[t[i] - 'a']++; } for(int i = 0; i < 26; i++){ ret += max(cnt1[i] - cnt2[i], 0); } return ret; } }; int main(){ Solution ob; cout << (ob.solve("eccynue", "science")); }
输入
"eccynue", "science"
输出
2