天津市做企业标准网站,长沙房产网最新楼盘地图,西安房产网站大全,用什么软件做楼盘微网站文章目录1. 题目2. 解题1. 题目
给你两个字符串 a 和 b #xff0c;二者均由小写字母组成。 一步操作中#xff0c;你可以将 a 或 b 中的 任一字符 改变为 任一小写字母 。
操作的最终目标是满足下列三个条件 之一 #xff1a;
a 中的 每个字母 在字母表中 严格小于 b 中…
文章目录1. 题目2. 解题1. 题目
给你两个字符串 a 和 b 二者均由小写字母组成。 一步操作中你可以将 a 或 b 中的 任一字符 改变为 任一小写字母 。
操作的最终目标是满足下列三个条件 之一
a 中的 每个字母 在字母表中 严格小于 b 中的 每个字母 。b 中的 每个字母 在字母表中 严格小于 a 中的 每个字母 。a 和 b 都 由 同一个 字母组成。
返回达成目标所需的 最少 操作数。
示例 1
输入a aba, b caa
输出2
解释满足每个条件的最佳方案分别是
1) 将 b 变为 ccc2 次操作满足 a 中的每个字母都小于 b 中的每个字母
2) 将 a 变为 bbb 并将 b 变为 aaa3 次操作满足 b 中的每个字母都小于 a 中的每个字母
3) 将 a 变为 aaa 并将 b 变为 aaa2 次操作满足 a 和 b 由同一个字母组成。
最佳的方案只需要 2 次操作满足条件 1 或者条件 3。示例 2
输入a dabadd, b cda
输出3
解释满足条件 1 的最佳方案是将 b 变为 eee 。提示
1 a.length, b.length 10^5
a 和 b 只由小写字母组成来源力扣LeetCode 链接https://leetcode-cn.com/problems/change-minimum-characters-to-satisfy-one-of-three-conditions 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
计数遍历比赛的时候细节出了问题一直过不了最后一个例子
class Solution {
public:int minCharacters(string a, string b) {int n1[26] {0}, n2[26] {0};int n[26] {0};char maxaa, minaz, maxb a, minb z;for(auto c : a){n1[c-a];n[c-a];maxa max(maxa, c);mina min(mina, c);}for(auto c : b){n2[c-a];n[c-a];maxb max(maxb, c);minb min(minb, c);}// 自然满足条件if(minb maxa || mina maxb) return 0;int maxchar 0;//所有字符最多的for(int i 0; i 26; i)maxchar max(maxchar, n[i]);int ans a.size()b.size()-maxchar;//两人都变成这个字符// 以下是比赛时写错的代码最后一个例子过不了// ---------------------// a// abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz// --------------------------------------// int numa 0, numb 0;// for(int i 0; i 26; i)// {// numa n1[i];// numb n2[i];// ans min(ans, int(a.size())-numanumb);// ans min(ans, int(b.size())-numbnuma);// }// 要改的话就是把 26 改成 25a [i1,25] 的字符改到前面 b [0, i] 的改到后面// i1 26 , i 25int numa n1[0], numb n2[0]; for(int i 1; i 26; i){// a [i,25] 的字符改到前面 b [0, i-1] 的改到后面ans min(ans, int(a.size())-numanumb);// b [i,25] 的字符改到前面 a [0, i-1] 的改到后面ans min(ans, int(b.size())-numbnuma);numa n1[i];numb n2[i];}return ans;}
};60 ms 14.5 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步