题目

给你两个字符串 a 和 b ,二者均由小写字母组成。一步操作中,你可以将 a 或 b 中的 任一字符 改变为 任一小写字母 。

操作的最终目标是满足下列三个条件 之一 :

  • a 中的 每个字母 在字母表中 严格小于 b 中的 每个字母 。
  • b 中的 每个字母 在字母表中 严格小于 a 中的 每个字母 。
  • a 和 b  由 同一个 字母组成。

返回达成目标所需的 最少 操作数

示例 1:

输入:a = "aba", b = "caa"
输出:2
解释:满足每个条件的最佳方案分别是:
1) 将 b 变为 "ccc",2 次操作,满足 a 中的每个字母都小于 b 中的每个字母;
2) 将 a 变为 "bbb" 并将 b 变为 "aaa",3 次操作,满足 b 中的每个字母都小于 a 中的每个字母;
3) 将 a 变为 "aaa" 并将 b 变为 "aaa",2 次操作,满足 a 和 b 由同一个字母组成。
最佳的方案只需要 2 次操作(满足条件 1 或者条件 3)。

示例 2:

输入:a = "dabadd", b = "cda"
输出:3
解释:满足条件 1 的最佳方案是将 b 变为 "eee" 。

提示:

  • 1 <= a.length, b.length <= 105
  • a 和 b 只由小写字母组成

题目链接:地址

分析

1. 首先用两个数组分别把两个字符串Hash化,<key:小写字母, value:字符串中该字母的个数>,

所以每个数组大小只需26

(我用27是因为当时不想多声明两个变量)

2. 遍历hash map,找最小操作数

如果此时要满足条件一

即A字符串中每个字母都小于B字符串中的每个字母,

则需要将A字符串中蓝色部分对应的字母替换为绿色对应的字母(任意替换),将B字符串中蓝色部分对应的字母替换为绿色对应的字母(任意替换)。

如果此时要满足条件二

即B字符串中每个字母都小于A字符串中的每个字母,

则需要将A字符串中绿色部分对应的字母替换为蓝色对应的字母(任意替换),将B字符串中绿色部分对应的字母替换为蓝色对应的字母(任意替换)。

最终效果如下图所示:

A的替换次数+B的替换次数 = 达成目标所需的操作数。

所以 最小的操作数= min("满足条件一所需的操作数", "满足条件二所需的操作数");

若要要满足条件三:

例如:将A、B都置换为“由小写字母c构成的字符串”

即将除了‘c’以外的所有字母都换成‘c’所需要的代价。

例如:"abcde"和"pppc" 满足条件三需要做4+3次置换。

总体来说,从小写字母a遍历到小写字母y(不是z,这一点可以画图验证一下),就是求满足任一条件下的最小值。

代码

class Solution {public int minCharacters(String a, String b) {int[] arr = new int[27];int[] brr = new int[27];int len_a = a.length(), len_b = b.length(), result = Integer.MAX_VALUE;for(int i = 0; i < a.length(); i++){arr[a.charAt(i) - 'a']++;}for(int i = 0; i < b.length(); i++){brr[b.charAt(i) - 'a']++;}for(int i = 0; i < 25; i++) {arr[26] += arr[i];brr[26] += brr[i];result = Math.min(Math.min(result, len_a + len_b - arr[i] -brr[i]), Math.min(brr[26] + len_a - arr[26], arr[26] + len_b - brr[26]));}return Math.min(result, len_a + len_b - arr[25] -brr[25]);}
}

Leetcode-1737-满足三条件之一需改变的最少字符数相关推荐

  1. LeetCode——1737. 满足三条件之一需改变的最少字符数(Change Minimum Characters to Satisfy One of Three...)——分析及代码(Java)

    LeetCode--1737. 满足三条件之一需改变的最少字符数[Change Minimum Characters to Satisfy One of Three Conditions]--分析及代 ...

  2. LeetCode 1737. 满足三条件之一需改变的最少字符数(计数)

    文章目录 1. 题目 2. 解题 1. 题目 给你两个字符串 a 和 b ,二者均由小写字母组成. 一步操作中,你可以将 a 或 b 中的 任一字符 改变为 任一小写字母 . 操作的最终目标是满足下列 ...

  3. leetcode 1737. 满足三条件之一需改变的最少字符数

    题目:https://leetcode-cn.com/problems/change-minimum-characters-to-satisfy-one-of-three-conditions/ 思路 ...

  4. 1737 - 满足三条件之一需改变的最少字符数 - 枚举 - 贪心

    欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击. 文章目录 题目描述 题目剖析&信息挖掘 解题思路 方法一 枚举+贪心 分析 思路 注意 知识点 复杂度 代码实现 相关题 ...

  5. 1737 满足三条件之一需改变的最少字符数

    题目描述: 给你两个字符串 a 和 b ,二者均由小写字母组成.一步操作中,你可以将 a 或 b 中的 任一字符 改变为 任一小写字母 . 操作的最终目标是满足下列三个条件 之一 : a 中的 每个字 ...

  6. 计算机控制电梯如需改变功能 则,电梯维修项目教程 教学课件 作者 孙文涛附加答案试卷综合实训三模拟试题(13).doc...

    PAGE 5 深圳高级技工学校2011-2012学年第二学期 <电梯综合实训三>理论模拟试题(13) : 号 学 : 级 班 : 名 姓 ┄ ┄ ┄ ┄一一 ┄ ┄┄ ┄┄┄ 线 此 过 ...

  7. leetcode No.15-16 三数之和相关问题

    leetcode 15. 三数之和 题目 链接:https://leetcode-cn.com/problems/3sum 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 ...

  8. Android App监听软键盘按键的三种方式与改变软键盘右下角确定键样式

    Android App监听软键盘按键的三种方式与改变软键盘右下角确定键样式 actionNone : 回车键,按下后光标到下一行 actionGo : Go, actionSearch : 放大镜 a ...

  9. LeetCode 2186. 使两字符串互为字母异位词的最少步骤数

    文章目录 1. 题目 2. 解题 1. 题目 给你两个字符串 s 和 t .在一步操作中,你可以给 s 或者 t 追加 任一字符 . 返回使 s 和 t 互为 字母异位词 所需的最少步骤数. 字母异位 ...

最新文章

  1. QQ拼音在中文输入下默认英文标点
  2. Oracle新建表时,复制另一张旧表的结构和数据
  3. linux apache中文名称图片,Apache、NGINX支持中文URL图片、文件名的终极解决方案
  4. hive 中文字符过滤_0650-6.2.0-通过UDF实现HiveImpala的中文拼音排序
  5. Istio服务网格路由入门
  6. 计算机典型的操作系统有,计算机操作系统典型示例.doc
  7. centos 程序 mysql数据库文件位置_Centos mysql数据库存放位置更换
  8. mac 修改pip镜像为国内镜像
  9. 超详细IPONE越狱教程详解
  10. 游记_秦皇岛-北戴河两日游
  11. Spring Cloud + Mybatis 多数据源配置
  12. VMware安装虚拟机详细教程
  13. mysql 如何时间分组,mysql如何按时间分组查询
  14. Java8新特性——Optional 类
  15. Baumer工业相机堡盟相机如何使用Binning像素合并功能( Binning像素合并功能的优点和行业应用)(C++)(C#)
  16. 谈谈:高端网站定制开发的流程和步骤有哪些?
  17. matlab多径信道模型,多径时变信道模型的仿真与性能分析课程设计(样例3)
  18. hbase+dataframe+java_Java实现Spark将DataFrame写入到HBase
  19. PW5410A原厂低噪声DC-DC升压开关电容倍压器
  20. 腾讯内部转岗_5亿人 在用的腾讯APP,要凉了!!!

热门文章

  1. Java:实现​lz4格式解压缩算法(附完整源码)
  2. 5G商用落地 “样板间”未达预期, URLLC如何带头提前进入5.5G时代?
  3. JS内置对象和数组方法
  4. java项目使用百度云AI完成刷脸登录
  5. i html设置为不倾斜,css如何不让字体倾斜?
  6. Mysql安装步骤方法
  7. C++ day24 继承(四)抽象基类,纯虚函数,protected
  8. 多传感器融合定位十四-基于图优化的定位方法
  9. Java毕设项目:房屋租赁管理系统(java+SSM+Maven+Mysql+Jsp)
  10. App流量变现并不一定损害用户体验,这些方法你得了解