LeetCode 1540. K 次操作转变字符串

leetcode 5469. K 次操作转变字符串 5469. K 次操作转变字符串 给你两个字符串 s 和 t ,你的目标是在 k 次操作以内把字符串 s 转变成 t 。 在第 i 次操作时(1 <= i <= k),你可以选择进行如下操作: 选择字符串 s 中满足 1 <= j <= s.length 且之前未被选过的任意下标 j (下标从 1 开始),并将此位置的字符切换 i 次。 不进行任何操作。 切换 1 次字符的意思是用字母表中该字母的下一个字母替换它(字母表环状接起来,所以 ‘z’ 切换后会变成 ‘a’)。 请记住任意一 阅读详情

题目链接:LeetCode 1540. K 次操作转变字符串

题意:

    给你两个字符串 s 和 t ,你的目标是在 k 次操作以内把字符串 s 转变成 t 。

在第 i 次操作时(1 <= i <= k),你可以选择进行如下操作:

选择字符串 s 中满足 1 <= j <= s.length 且之前未被选过的任意下标 j (下标从 1 开始),并将此位置的字符切换 i 次。
不进行任何操作。
切换 1 次字符的意思是用字母表中该字母的下一个字母替换它(字母表环状接起来,所以 'z' 切换后会变成 'a')。

请记住任意一个下标 j 最多只能被操作 1 次。

如果在不超过 k 次操作内可以把字符串 s 转变成 t ,那么请你返回 true ,否则请你返回 false 。

 

解题思路:

   由于每个下标只能操作一次,所以,需要查看一下 k 次内能将26个字母 转换多少次,比较需要的次数,如果多的话,返回true

 

举例:

 (1)s = "input", t = "ouput", k = 9

i 到 o需要一个 6, n 到 u 需要一个7,  9里面有一个6和一个7满足.

(2)s = "abc", t = "bcd", k = 10

a 到b需要一个1, b到c需要一个1,c到d需要一个1,而10里面只有一个1,不满足

小问题需要注意,如果两个字符串长度不相同,直接返回false

代码:

class Solution {

    /**
     * @param String $s
     * @param String $t
     * @param Integer $k
     * @return Boolean
     */
    function canConvertString($s, $t, $k) {
        $lens = strlen($s);
        $lent = strlen($t);
        if($lens != $lent){
            return false;
        }
        $a = array();
        $b = array();
        for($i = 1; $i < 26; $i++){
            $a[$i] = 0; 
            if($k % 26 != 0 && intval(($k % 26) / $i ) > 0){ // 记录k里有多少个i
                $b[$i] = intval($k / 26) + 1;
            }
            else{
                $b[$i] = intval($k / 26);
            }
        }
        for($i = 0; $i < $lens; $i++){
            $u = ord($t[$i]) - ord($s[$i]);  // s 到 u需要几次操作
            if($u > 0){
                $a[$u]++;
            } elseif($u < 0){
                $a[26+$u]++;
            }
        }
        $ans = true;
        for($i = 1; $i < 26; $i++){
            if($a[$i] > $b[$i]){  // 如果操作的数大于k里面的数,不满足
                $ans = false;
                break;
            }
        }
        return $ans;
    }
}

 

保姆级教程:从WOS下载文献到Citespace出图,手把手搞定科研可视化(附避坑指南) 本文提供从WOS下载文献到Citespace出图的完整科研可视化指南,涵盖数据采集、清洗、环境配置和可视化优化全流程。特别分享WOS检索技巧、数据清洗方法和Citespace参数设置,帮助科研新手高效生成专业图谱,避开常见技术陷阱。 阅读详情

相关推荐

Windows下玩转Spark:零基础本地集群搭建与实战演示

本文详细介绍了在Windows系统下零基础搭建Spark本地集群的完整流程,包括环境准备、集群启动、实战案例演示及性能优化技巧。通过Standalone模式快速部署,结合WordCount等经典案例帮助初学者快速掌握Spark数据处理,特别适合Windows环境下的大数据开发入门学习。

weixin_33734785的博客 424

字典树——例题

给定 n个长度不超过10的数字串,问其中是否存在两个数字串 S、T,使得 S是 T的前缀,多组数据。 输入格式 第一行一个整数 T,表示数据组数。 对于每组数据,第一行一个数n,接下来 n行输入 n个数字串。 输出格式 对于每组数据,若存在两个数字串 S、T,使得 S是 T的前缀,则输出 NO ,否则输出 YES 。 请注意此处结果与输出的对应关系! 样例 样例输入 2 3 911 97625999 91125426 5 113 12340 123440 12345 98346 样例输出 NO YES 数据

mashizuren的博客 952

1.30 Cubemx_STM32H743 SD_Card纳入文件管理系统

Cubemx_STM32H743 SD_Card纳入文件管理系统1、简介2、CubeMX配置 1、简介 和前面文章原理其实一样的。 1.29 Cubemx_STM32F429\H743 nandflash、spifalsh纳入文件管理系统 现在一并将SD卡、NandFlash、SPIFlash一并作为文件管理。 下面直接介绍SDcard,其他参考前面文章。 2、CubeMX配置 ...

oDuanYanGuHong的博客 1079

1472. 双胞胎字符串

1472. 双胞胎字符串 给定两个字符串 s和t,每次可以任意交换s的奇数位或偶数位上的字符,即奇数位上的字符能与其他奇数位的字符互换,而偶数位上的字符能与其他偶数位的字符互换,问能否经过若干次交换,使s变成t。 样例 给出 s=“abcd”,t=“cdab”,返回"Yes"。 解释: 第一次a与c交换,第二次b与d交换。 给出 s=“abcd”,t=“bcda”,返回"No"。 解释: 无论如何...

fct2001140269的博客 569

精度0.01%决定续航多20km|新能源汽车研发测试:功率分析仪到底有多硬核?

新能源汽车测试、功率分析仪、电驱系统、效率MAP、谐波THD、GB/T18488、CLTC工况、三电测试、台架标定、能量流分析。中的核心作用,用公式、思维导图、实战金句与避坑指南,帮研发测试人员把准数据、提效率、降返工,看完就能落地用。点击关注,进公众号主页查看历史文章,**台架接线图、效率MAP模板、GB/T18488测试清单等。优化弱磁/调制策略,高效区占比提升5%,CLTC续航直接+8~20km。同样工况,两次数据差0.8%,报告根本没法交。结果:数据飘、定位慢、反复返工、认证不过。

优快云-新能源汽车研发测试专业博主 169

【四足机器人项目实战】四足机器人腿部机械结构设计

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言 前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 本文先对四足机器人–腿部机械结构设计做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 为了减轻腿部惯量,使用有限元分析着重进行轻量化设计,小腿采用工字梁方案,大腿采用内部镂方案,并使用1.5 mm的AL 6061硬质材料,轻量化的腿部设了腿部运动时摆动

qq_35635374的博客 7538

字符串对比

字符串对比 (vip) 问题描述   给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:   1:两个字符串长度不等。比如 Beijing 和 Hebei   2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing   3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能

u012689941的专栏 1800

手把手完整实现STM32+ESP8266+MQTT+ThingsCloud云平台+Android App及iOS App及微信小程序及Web App应用

本教程文章完整记录实现STM32+ESP8266+MQTT+ThingsCloud云平台+Android App及iOS App及微信小程序及Web App应用。

嵌入式阿齐Archie 1万+

Trie树

Trie + 01Trie

NEFU AB-IN's Blog 604

uniapp [全端兼容] - 实现全景图Vr 720°全景效果查看预览功能,3D全景图流畅不卡顿渲染+手势拖拽+悬浮工具按钮,uniAPP实现vr看720度全景效果示例代码(H5小程序APP全兼容)

uniapp显示720度全景图,720°全景图显示,在h5中展示720°全景图,浏览全景图,基于uniApp实现vr全景预览,加载全景图,uni-app全景预览插件,UNI-APP实现3D全景图,实现720°全景图展示,uniapp全景视频播放,uniapp项目实现vr720度全景图片预览,在网页上展示760全景图片和视频,全景图场景切换,UNIAPP全景VR图,uniapp加载720全景图_uniapp怎么加载vr图片,uniapp实现vr全景看房,uni-app实现全景效果,加载很慢卡怎么办,实现全景预

🏆 前端领域优质创作者 1万+

RK3568平台开发系列讲解(音频篇)配置声卡

📢本篇文章介绍如何配置声卡。

内核笔记 2448

将输入字符串t中从第m个字符开始的全部字符复制到字符串s中_leetcode第32双周赛第二题leetcode1540. K 次操作转变字符串...

leetcode1540. K 次操作转变字符串给你两个字符串 s 和 t ,你的目标是在 k 次操作以内把字符串 s 转变成 t 。在第 i 次操作时(1 <= i <= k),你可以选择进行如下操作:选择字符串 s 中满足 1 <= j <= s.length 且之前未被选过的任意下标 j (下标从 1 开始),并将此位置的字符切换 i 次。不进行任何操作。切换 1 次...

weixin_39571179的博客 930

PCIe Base Specification解析(二)

PCIe事务层,Transaction Layer Specification

Crazzy_M的博客 1291

leetcode1540. K 次操作转变字符串(Python3、c++)

文章目录leetcode1540. K 次操作转变字符串方法:计数思路:代码:Python3:cpp:结果: leetcode1540. K 次操作转变字符串 给你两个字符串 s 和 t ,你的目标是在 k 次操作以内把字符串 s 转变成 t 。 在第 i 次操作时(1 <= i <= k),你可以选择进行如下操作: 选择字符串 s 中满足 1 <= j <= s.length 且之前未被选过的任意下标 j (下标从 1 开始),并将此位置的字符切换 i 次。 不进行任何操作。

weixin_43422466的博客 455

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

LeetCode 1540. K 次操作转变字符串--map进行数字标记

K 次操作转变字符串 给你两个字符串 s 和 t ,你的目标是在 k 次操作以内把字符串 s 转变成 t 。 在第 i 次操作时(1 <= i <= k),你可以选择进行如下操作: 选择字符串 s 中满足 1 <= j <= s.length 且之前未被选过的任意下标 j (下标从 1 开始),并将此位置的字符切换 i 次。 不进行任何操作。 切换 1 次字符的意思是用字母表中该字母的下一个字母替换它(字母表环状接起来,所以 ‘z’ 切换后会变成 ‘a’)。 请记住任意一个下标.

weixin_43918046的博客 385

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C语言-力扣1540.K次操作转变字符串

C语言刷力扣1540的一些想法

z8813的博客 190

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LeetCode 1540. K 次操作转变字符串(贪心)

题目 思路 这道题的特殊之处在与第k次操作正好要将一个字符切换k次,而根据题意,切换一个字符k次和k+26n次是等效的,这里的n可以理解为“轮”。如果两个字符串的比较过程中出现了最小切换次数相同的字符,那么它们肯定有一个要在下一轮中才能操作成功。即有m个最小切换次数为l次的字符的话,那么至少需要m+(l-1)*26次操作才可以。因此本题只需要在遍历比较的过程中找到最大的操作次数,最后和k比较即可。 代码 class Solution: def canConvertString(s..

qq_41461410的博客 319

力扣刷题2023-04-24-1——题目:1540. K 次操作转变字符串

我们可以在第 1 次操作时将 'a' 切换成 'b' ,但另外 2 个字母在剩余操作中无法再转变为 t 中对应字母。第 1 次操作时,我们将第一个 'a' 切换 1 次得到 'b'。在第 27 次操作时,我们将第二个字母 'a' 切换 27 次得到 'b'。第 6 次操作时,我们将 'i' 切换 6 次得到 'o'。第 7 次操作时,我们将 'n' 切换 7 次得到 'u'。切换 1 个字符的意思是用字母表中该字母的下一个字母替换它(字母表环状接起来,所以。最多只能被操作 1 次。

qq_25368751的博客 522

leetcode 1540. K次操作转变字符串-耗时95-Can Convert String in K Moves

Problem:耗时95%,统计差值的余数的频次,相同余数满足等差数列,若不满足【余数 + 26 * ( 频次 - 1 ) <= k】则返回false最后返回true。

邹九的个人博客 67

1540. K 次操作转变字符串

这道题虽然规则复杂,但通过数学分析,利用模运算周期性和计数分配思想,可以快速判断是否能完成转换。每次操作必须使用对应的切换次数i字符切换次数与操作编号的模26关系,每个差值操作的编号必须分散开(相差26)。这也是算法中常见的周期性调度与计数应用的经典案例。d%20&plus;

Lucy_wzw的博客 734

力扣:K 次操作转变字符串

题目描述 给你两个字符串 s 和 t ,你的目标是在 k 次操作以内把字符串 s 转变成 t 。 在 第 i 次操作时(1 <= i <= k),你可以选择进行如下操作: 选择字符串 s 中满足 1 <= j <= s.length 且之前未被选过的任意下标 j (下标从 1 开始),并 将此位置的字符切换 i 次 。 不进行任何操作。 切换 1 次字符的意思是用字母表中该字母的下一个字母替换它(字母表环状接起来,所以 ‘z’ 切换后会变成 ‘a’)。 请记住任意一个下标

ZhangyiA的博客 591

leetcode 1540. Can Convert String in K Moves

描述 Given two strings s and t, your goal is to convert s into t in k moves or less. During the ith (1 <= i <= k) move you can: Choose any index j (1-indexed) from s, such that 1 <= j <= s.length and j has not been chosen in any previous move, an

王大呀呀的博客 255

[leetcode] 1540. Can Convert String in K Moves

Description Given two strings s and t, your goal is to convert s into t in k moves or less. During the ith (1 <= i <= k) move you can: Choose any index j (1-indexed) from s, such that 1 <= j <= s.length and j has not been chosen in any previou

Learning from the mistakes 274

LeetCode题解(1540):通过K次指定操作能否将字符串转换为指定字符串(Python)

题目:原题链接(中等) 标签:字符串、哈希表、贪心算法 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(S+T)O(S+T)O(S+T) O(1)O(1)O(1) 468ms (58.16%) Ans 2 (Python) O(S+T)O(S+T)O(S+T) O(1)O(1)O(1) 364ms (84.43%) Ans 3 (Python) 解法一: class Solution: def canConvertString(self,

长行 501

LeetCode刷题日记(序&Day1)

LeetCode刷题日记(序) 今天是正式启动LeetCode刷题计划的第一天,主要是为了提升代码能力以及面向研究生考试/面试。我会通过博客记录答题的思路、过程与主要代码。思路/代码风格若有问题,欢迎评论区讨论~ ...

FreshManInC的博客 243

LeetCode每日一题(1540. Can Convert String in K Moves)

差点被这题给玩死, 上来首先想到, 我们要把 s 和 t 的差值都计算出来, 如果 t[i] >= s[i]则正常 t[i] - s[i], 如果 t[i] < s[i]我们需要绕一圈即 t[i] + 26 - s[i], 计算完之后我们首先想到排序, 我们将差值从小到大排列, 然后一个一个的进行 shift 操作, 如果该差值已经操作过了, 那我们需要将该差值+26 再进行 shift, 理论上这样可行, 但是提交的结果是超时。

wangjun861205的博客 224
上一篇: LeetCode 1539.第k个缺失的正整数
下一篇: LeetCode 1541. 平衡括号字符串的最少插入次数
error0318
博客等级 码龄9年 57粉丝 515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值