掘友等级
营业时间:工作日10:00-19:00
没回就先留言
获得徽章 0
#刷题交流# 版本号比较
拆分版本号:将 version1 和 version2 分别拆分成修订号的列表。
补齐修订号:如果两个版本号的修订号数量不一致,将较短的版本号的缺失部分补为 0。
逐个比较修订号:从左到右依次比较修订号。忽略每个修订号的前导零,直接比较修订号对应的整数值。
返回比较结果:
如果 version1 的某个修订号大于 version2 的对应修订号,返回 1。
如果 version1 的某个修订号小于 version2 的对应修订号,返回 -1。
如果所有修订号都相等,返回 0。
#刷题交流# 今天这个题目复习了队列的知识,先进先出的特点,配合while循环实现
#刷题交流# 37进制数字相乘问题
字符到数字的映射:创建一个字典,例如 char_to_int = {char: index for index, char in enumerate(charset)},其中 charset 是字符集。
37进制到10进制的转换:遍历字符串 a 和 b,将每个字符转换为对应的数字,然后根据进制计算出10进制的值。
乘法运算:直接将两个10进制整数相乘。
10进制到37进制的转换:将乘积结果不断除以37,取余数,并将余数转换为对应的字符,直到结果为0。
返回结果:将转换后的37进制字符串反转并返回。
#刷题交流# 小G的平衡串转换 计算所需的最小操作次数
如果a的数量多于b+c,则需要将一些a转变为b或c
如果a的数量少于b+c,则需要将一些b或c转变为a
操作次数为a的数量与b+c数量之和的差的一半
#刷题交流# 学习到了一个新的密码思路,但是吧,记不住。a,b,c=2
d,e,f=3
#刷题交流# 打卡12天~《补给站最优话费问题》:目的是是找到一种购买策略,使得总花费最小。。先初始化,在遍历补给站,接着计算最终费用
#刷题交流#
day12: DNA序列编辑距离
解题思路:
1. 定义状态:设 dp[i][j] 表示将 dna1[0..i-1] 转换成 dna2[0..j-1] 所需的最少编辑步骤。
2. 状态转移:如果 dna1[i-1] == dna2[j-1],那么 dp[i][j] = dp[i-1][j-1],因为不需要任何编辑。
如果 dna1[i-1] != dna2[j-1],我们有三种操作:
插入:在 dna1 中插入一个字符,操作后变成 dp[i][j-1] + 1。
删除:删除 dna1[i-1] 中的一个字符,操作后变成 dp[i-1][j] + 1。
替换:将 dna1[i-1] 替换为 dna2[j-1],操作后变成 dp[i-1][j-1] + 1。
初始化:dp[0][j] 表示将空字符串转换为 dna2[0..j-1],需要 j 次插入;dp[i][0] 表示将 dna1[0..i-1] 转换为空字符串,需要 i 次删除。
返回结果:最终的编辑距离是 dp[m][n],其中 m 和 n 分别是 dna1 和 dna2 的长度。
解毕.
#刷题交流# 打卡第十一天,小S的倒排索引,两个数组取交集后按照重大到小的顺序排列
#刷题交流# 打卡第11天,问题描述
小U和小R有两个字符串,分别是S和T,现在小U需要通过对S进行若干次操作,使其变成T的一个前缀。操作可以是修改S的某一个字符,或者删除S末尾的字符。现在你需要帮助小U计算出,最少需要多少次操作才能让S变成T的前缀。解题思路:我们有两种选择:修改或删除。由于题目允许的操作包括修改一个字符或者删除末尾的字符,因此最优策略是直接删除所有超出部分,因为这总是不会比逐个修改更差。
下面是解决问题的算法:找到S和T的最长公共前缀长度。计算S的长度与这个公共前缀长度的差值,即为需要进行操作的次数。返回这个差值作为结果。
下一页