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

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你两个字符串 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 <= 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 maxa='a', mina='z', 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())-numa+numb);//     ans = min(ans, int(b.size())-numb+numa);// }// 要改的话,就是把 26 改成 25,a [i+1,25] 的字符改到前面,+ b [0, i] 的改到后面// i+1 < 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())-numa+numb);// b [i,25] 的字符改到前面,+ a [0, i-1] 的改到后面ans = min(ans, int(b.size())-numb+numa);numa += n1[i];numb += n2[i];}return ans;}
};

60 ms 14.5 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle对查询结果求和_oracle基础知识分享

原文链接&#xff1a;https://page.om.qq.com/page/OO2PXCD6VZ6CVqLqjpU6uShg0以下是本人整理的ORACLE学习的一些基本的语法知识&#xff0c;如有不对的地方&#xff0c;望大家批评指正&#xff0c;如有转载请注明出处&#xff1a;一、ORACLE完整性约束&#xff1a;1.NOT NULL …

Docker官方案例学习

下面以官方的一个demo学习学习。。。 1、进入windows版docker界面&#xff0c;新建文件夹pp 2、进入pp&#xff0c;在目录下新建三个文件 dockerfile.txt&#xff0c;app.py&#xff0c;requirements.txt 2.1 dockerfile文件 # Use an official Python runtime as a parent…

LeetCode 1738. 找出第 K 大的异或坐标值(DP)

文章目录1. 题目2. 解题947 / 3851&#xff0c;前 24.6%2533 / 11282&#xff0c;前 22.5% 1. 题目 给你一个二维矩阵 matrix 和一个整数 k &#xff0c;矩阵大小为 m x n 由非负整数组成。 矩阵中坐标 (a, b) 的 值 可由对所有满足 0 < i < a < m 且 0 < j <…

fileinputstream_Java I/O 流之 FileInputStream

一、FileInputStream 简介1、概念FileInputStream 是 Java 语言中抽象类 InputStream 用来具体实现类的创建对象。FileInputStream 流被称为文件字节输入流&#xff0c;意思指对文件数据以字节的形式进行读取操作如读取图片视频等。2、构造方法1&#xff09;通过打开与 File 类…

小案例:基于python的动态时钟,带十二时辰和经络养身

一、前言 1、仅用来研究学习使用。 2、除正常显示时钟外&#xff0c;还可以实时显示当前对应的时辰&#xff0c;和经络养身提示。 3、适合辅助上班族来养生 二、效果如下&#xff1a; 三、源码如下&#xff1a; 动态时钟附带十二时辰显示import turtle # 导入绘图海龟模块 …

【海淘域名】GoDaddy账户被锁定后的解决方法

转载自【美国海淘网】http://www.usahaitao.com/Experience/Detail_2886.html通过ICANN申诉顺利的从国内无良奸商(35互联与商务中国,小编的域名在这2个大的服务商手中。不过开始都是图便宜&#xff0c;不懂得国内域名管理的黑幕&#xff0c;所以从其下属的皮包第三方手里购入域…

回归分析常数项t值没有显著异于零怎么办_线性回归分析思路总结!简单易懂又全面!...

线性回归分析是一种研究影响关系的方法&#xff0c;在实际研究里非常常见。不管你有没有系统学习过&#xff0c;对于线性回归&#xff0c;相信多少都有那么一点了解。即使如此&#xff0c;在实际分析时&#xff0c;还是会碰到很多小细节&#xff0c;让我们苦思冥想困扰很久&…

LeetCode 1733. 需要教语言的最少人数(哈希+枚举)

文章目录1. 题目2. 解题1. 题目 在一个由 m 个用户组成的社交网络里&#xff0c;我们获取到一些用户之间的好友关系。 两个用户之间可以相互沟通的条件是他们都掌握同一门语言。 给你一个整数 n &#xff0c;数组 languages 和数组 friendships &#xff0c;它们的含义如下&a…

java 3种单例模式

1.饿汉式 1 package singleInstance;2 /**饿汉式&#xff0c;类加载时候创建实例&#xff0c;浪费资源&#xff0c;线程是安全的*/3 public class SingleDome01 {4 //私有构造方法&#xff0c;防止直接new对象5 private SingleDome01() {6 }7 //类加载的时候&a…

在c#中用mutex类实现线程的互斥_面试官经常问的synchronized实现原理和锁升级过程,你真的了解吗...

本篇文章主要从字节码和JVM底层来分析synchronized实现原理和锁升级过程&#xff0c;其中涉及到了简单认识字节码、对象内部结构以及ObjectMonitor等知识点。阅读本文之前&#xff0c;如果大家对synchronized关键字的基本使用还不是很了解的话&#xff0c;推荐阅读笔者之前的一…

TensorFlow 2.x GPU版在conda虚拟环境下安装步骤

先下载安装驱动&#xff1a;https://www.nvidia.cn/Download/index.aspx?langcn&#xff0c;版本要求 WSL cuda 驱动 https://developer.nvidia.com/cuda/wsl 下载安装 anaconda&#xff0c;管理虚拟环境&#xff1a;https://www.anaconda.com/products/individual&#xff0…

如何通过网络将文件传输到嵌入式设备_嵌入式系统 Boot Loader技术内幕,带你完全了解Boot Loader...

一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次&#xff1a;1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选)&#xff0c;和 Boot Loader 两大部分。2. Linux 内核。特定于嵌入式板子的定制内核以及内核的启动参数。3. 文件系统。包括根文件系统和建…

TensorFlow 2.0 - CNN / 预训练 / RNN

文章目录1. CNN 卷积神经网络2. 预训练模型3. RNN 循环神经网络学习于&#xff1a;简单粗暴 TensorFlow 2 1. CNN 卷积神经网络 卷积神经网络&#xff0c;卷积后尺寸计算 tf.keras.layers.Conv2D&#xff0c; tf.keras.layers.MaxPool2D # CNN 模型 class myCNN(tf.keras.M…

openwrt mt7620 内存大小检测

单独编译内核: make Vs target/linux/install 相调函数调用流程&#xff1a; init/main.c : start_kernel() -> setup_arch(&command_line) arch/mips/kernel/setup.c: setup_arch()-> cpu_probe()-> prom_init()-> arch_mem_init() -> plat_mem_setup() -&…

python获取当前路径的方法_Python获取脚本所在目录的正确方法【转】

原博文 2015-09-24 10:21 − 1.以前的方法如果是要获得程序运行的当前目录所在位置&#xff0c;那么可以使用os模块的os.getcwd()函数。如果是要获得当前执行的脚本的所在目录位置&#xff0c;那么需要使用sys模块的sys.path[0]变量或者sys.argv[0]来获得。实际上sys.path是Pyt…

JAVA NIO 简介(转)

1. 基本 概念IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现&#xff0c;底层通过 I/O 指令进行完成。 所有语言运行时系统提供执行 I/O 较高级别的工具。 (c 的 printf scanf,java 的面向对象封装 ) 2. Java 标准 io 回顾Jav…

TensorFlow 2.0 - Keras Pipeline、自定义Layer、Loss、Metric

文章目录1. Keras Sequential / Functional API2. 自定义 layer3. 自定义 loss4. 自定义 评估方法学习于&#xff1a;简单粗暴 TensorFlow 2 1. Keras Sequential / Functional API tf.keras.models.Sequential([layers...])&#xff0c;但是它不能表示更复杂的模型 mymodel…

python去重复元素_Python实现去除列表中重复元素的方法总结【7种方法】

这里首先给出来我很早之前写的一篇博客&#xff0c;Python实现去除列表中重复元素的方法小结【4种方法】&#xff0c;感兴趣的话可以去看看&#xff0c;今天是在实践过程中又积累了一些方法&#xff0c;这里一并总结放在这里。 由于内容很简单&#xff0c;就不再过多说明了&…

oracle取差值集合

Oracle Minus关键字 SQL中的MINUS关键字 SQL中有一个MINUS关键字&#xff0c;它运用在两个SQL语句上&#xff0c;它先找出第一条SQL语句所产生的结果&#xff0c;然后看这些结果有没有在第二个SQL语句的结果中。如果有的话&#xff0c;那这一笔记录就被去除&#xff0c;而不会…

TensorFlow 2.0 - Checkpoint 保存变量、TensorBoard 训练可视化

文章目录1. Checkpoint 保存变量2. TensorBoard 训练过程可视化学习于&#xff1a;简单粗暴 TensorFlow 2 1. Checkpoint 保存变量 tf.train.Checkpoint 可以保存 tf.keras.optimizer 、 tf.Variable 、 tf.keras.Layer 、 tf.keras.Model path "./checkp.ckpt" …