网易首页 > 网易号 > 正文 申请入驻

2026-10-08:一次替换后的子序列。用go语言,给定两个只包含小写字母的字符串 s 和 t。你可以在 s 中至多改动一个位置上的字符,把它换成

0
分享至

2026-10-08:一次替换后的子序列。用go语言,给定两个只包含小写字母的字符串 s 和 t。你可以在 s 中至多改动一个位置上的字符,把它换成任意一个小写字母。问经过这样的至多一次改动后,能否让 s 按原有先后顺序出现在 t 中。也就是说,能否从 t 里删掉一些字符后,得到完整的 s;只要求字符顺序一致,不要求连续。如果能够做到,结果为 true;否则为 false。

1 <= s.length, t.length <= 100000。

s 和 t 仅由小写英文字母组成。

输入: s = "cat", t = "chat"。

输出: true。

解释:

将 s[1] 从 'a' 替换为 'h',得到字符串 "cht"。

"cht" 是 "chat" 的子序列,因为可以按顺序匹配 'c'、'h' 和 't'。

题目来自力扣3983。

大体步骤如下:

  • • 状态一:表示完全没有使用过修改机会时,s 的前面已经有多少个字符成功按顺序匹配到了 t 的当前前缀中。

  • • 状态二:表示最多使用一次修改机会时,s 的前面已经有多少个字符成功按顺序匹配到了 t 的当前前缀中。这里“最多一次”可以是一次都没用,也可以是已经用掉了那唯一的一次修改。

一开始,两个状态都从 0 开始,表示还没有匹配任何字符。如果 s 的长度比 t 还长,那肯定不可能成为子序列,直接返回 false。

然后从左到右依次扫描 t 中的每一个字符。对于当前字符,会做几件事:

  1. 1. 先尝试让“已经用过修改机会”的状态继续正常匹配。
    也就是看 s 中当前待匹配的那个字符,是否正好等于 t 的当前字符。如果相等,就不需要额外修改,直接让这个状态往后走一位。

  2. 2. 再考虑在当前字符处使用修改机会。
    如果“完全没用过修改机会”的状态已经匹配了 s 的前若干个字符,那么我们可以把 s 中下一个还没匹配的字符改成当前 t 的字符,这样就能强行多匹配一个字符。于是“已经用过修改机会”的状态至少可以推进到“未用修改机会的状态 + 1”。如果原来这个状态已经更靠后,就保持不变。这一步体现了“最多改一个字符”的选择。

  3. 3. 然后更新“完全没用过修改机会”的状态。
    看 s 中当前待匹配的字符是否正好等于 t 的当前字符。如果相等,就正常匹配,这个状态也往后走一位。

  4. 4. 每次处理完当前字符后,检查“已经用过修改机会”的状态是否已经达到了 s 的总长度。
    如果达到了,说明整个 s 已经按顺序出现在 t 的处理过的部分里,而且最多只改了一个字符,因此可以直接返回 true。

如果 t 的所有字符都扫描完了,这个状态仍然没有达到 s 的总长度,说明无法做到,返回 false。

用例子 s = "cat",t = "chat" 来看:

  • • 初始两个状态都是 0。

  • • 遇到 t 的 'c':s 的第一个字符也是 'c',所以两个状态都可以正常前进,都变成 1。

  • • 遇到 'h':s 的第二个字符是 'a',不等于 'h'。未用修改的状态不能前进,仍然是 1。但已用修改的状态可以借助修改机会,把 s 的第二个字符 'a' 改成 'h',于是这个状态推进到 2。

  • • 遇到 'a':已用修改的状态当前待匹配的是 s 的第三个字符 't',不等于 'a',不能正常前进;但它已经用过一次修改,不能再改,所以保持 2。未用修改的状态此时待匹配的是 s 的第二个字符 'a',正好等于 'a',所以前进到 2。

  • • 遇到 't':已用修改的状态待匹配的是 s 的第三个字符 't',正好等于 't',于是前进到 3。此时已达到 s 的总长度 3,返回 true。

整个过程中,只遍历了 t 一次,每个字符只做了常数次比较和更新操作,所以总的时间复杂度是 O(t 的长度)。额外使用的变量只有几个整数状态,不随字符串长度增长,所以总的额外空间复杂度是 O(1)。

Go完整代码如下:

package main

import (
"fmt"
)

func canMakeSubsequence(s, t string)bool {
n := len(s)
if n > len(t) {
returnfalse
}

j0 := 0// 在不修改的情况下,s 的前缀 [0, j0-1] 是 t 的当前前缀的子序列
j1 := 0// 在改过一次的情况下,s 的前缀 [0, j1-1] 是 t 的当前前缀的子序列
for _, ch := range t {
// j1 普通匹配
if s[j1] == byte(ch) {
j1++
}

// 也可以修改 s[j0] 为 ch,强行匹配
j1 = max(j1, j0+1)

// j0 普通匹配
if s[j0] == byte(ch) {
j0++
}

if j1 == n {
// s 是 t 的子序列
returntrue
}
}
returnfalse
}

func main() {
s := "cat"
t := "chat"
result := canMakeSubsequence(s, t)
fmt.Println(result)
}

Python完整代码如下:

# -*-coding:utf-8-*-

def canMakeSubsequence(s: str, t: str) -> bool:
n = len(s)
if n > len(t):
return False

if n == 0:
return True

j0 = 0 # 不修改时,s 的前缀 [0, j0-1] 已匹配
j1 = 0 # 最多修改一次时,s 的前缀 [0, j1-1] 已匹配

for ch in t:
# j1 尝试正常匹配
if j1 < n and s[j1] == ch:
j1 += 1

# 也可以把 s[j0] 修改为 ch,强行多匹配一个字符
j1 = max(j1, j0 + 1)

# j0 尝试正常匹配
if j0 < n and s[j0] == ch:
j0 += 1

if j1 == n:
return True

return False

if __name__ == "__main__":
s = "cat"
t = "chat"
result = canMakeSubsequence(s, t)
print(result)

C++完整代码如下:

  



bool canMakeSubsequence(const std::string& s, const std::string& t) {
int n = static_cast(s.size());
if (n > static_cast(t.size())) {
returnfalse;
}
if (n == 0) {
returntrue;
}

int j0 = 0; // 不修改时,s 的前缀 [0, j0-1] 已匹配
int j1 = 0; // 最多修改一次时,s 的前缀 [0, j1-1] 已匹配

for (char ch : t) {
// j1 尝试正常匹配
if (j1 < n && s[j1] == ch) {
++j1;
}

// 也可以把 s[j0] 修改为 ch,强行多匹配一个字符
if (j0 < n) {
j1 = std::max(j1, j0 + 1);
}

// j0 尝试正常匹配
if (j0 < n && s[j0] == ch) {
++j0;
}

if (j1 == n) {
returntrue;
}
}
returnfalse;
}

int main() {
std::string s = "cat";
std::string t = "chat";
bool result = canMakeSubsequence(s, t);
std::cout << std::boolalpha << result << std::endl;
return0;
}

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
巴黎生图辣眼睛!胡可一脸老相,毛晓彤像戴了张假脸,陈妍希太美

巴黎生图辣眼睛!胡可一脸老相,毛晓彤像戴了张假脸,陈妍希太美

神秘莫测的世界
2026-10-06 20:31:51
水均益晒14岁龙凤胎,国外读书花销大,全靠他一人在北京赚钱养家

水均益晒14岁龙凤胎,国外读书花销大,全靠他一人在北京赚钱养家

梦想的旅途照进现实
2026-10-07 15:22:40
土耳其的女子确实漂亮,兼具典雅容貌与异域风情

土耳其的女子确实漂亮,兼具典雅容貌与异域风情

娱你同欢
2026-10-07 11:06:22
被保护的很好是啥体验?网友:看好你老婆,小心被骗

被保护的很好是啥体验?网友:看好你老婆,小心被骗

带你感受人间冷暖
2026-10-05 00:05:21
悲催!重庆22岁女孩柬埔寨失联20余天,母亲苦苦寻女,网友却恶意调侃,“吸毒史、纹身”成舆论焦点

悲催!重庆22岁女孩柬埔寨失联20余天,母亲苦苦寻女,网友却恶意调侃,“吸毒史、纹身”成舆论焦点

火山詩话
2026-10-07 10:37:19
演员潘粤明画的一幅鬼画,网友:狗链子画的好!

演员潘粤明画的一幅鬼画,网友:狗链子画的好!

乡野小珥
2026-09-21 04:03:10
最高法:回村定居的退休人员,有权重修祖宅或申请宅基地建房

最高法:回村定居的退休人员,有权重修祖宅或申请宅基地建房

智慧生活笔记
2026-10-01 09:54:07
全网追凶,企业不闻不问!谁是东航让空姐下跪的欧某某

全网追凶,企业不闻不问!谁是东航让空姐下跪的欧某某

平老师666
2026-10-07 23:18:59
港币已经没有必要单独存在了

港币已经没有必要单独存在了

凯利经济观察
2026-10-07 10:34:32
绝不认错!美军强硬表态刺痛日方,首相防相接连发声,无人在乎

绝不认错!美军强硬表态刺痛日方,首相防相接连发声,无人在乎

青青衫书生
2026-10-07 15:18:45
刘亦菲被曝“掉了瑞幸、天梭等多个代言”,瑞幸官微深夜连发三个问号后晒出新宣传照回应;随后她“一下子加五个代言”冲上热搜

刘亦菲被曝“掉了瑞幸、天梭等多个代言”,瑞幸官微深夜连发三个问号后晒出新宣传照回应;随后她“一下子加五个代言”冲上热搜

无比
2026-10-06 11:33:08
42岁中国男游客赴日旅游,在更衣室偷拍男客人裸体,被抓后硬拗:“没想要拍!”

42岁中国男游客赴日旅游,在更衣室偷拍男客人裸体,被抓后硬拗:“没想要拍!”

日本物语
2026-10-06 20:35:29
“我们自愿有何罪”?三男三女聚众淫乱,三亚高知换妻游戏案始末

“我们自愿有何罪”?三男三女聚众淫乱,三亚高知换妻游戏案始末

易玄
2026-09-13 11:43:30
特朗普向中国投降后,转而向欧盟开火,中国或将因此迎来重大国运

特朗普向中国投降后,转而向欧盟开火,中国或将因此迎来重大国运

史行途
2026-10-08 01:58:46
一个人如果舍不得扔旧衣服,说明他的命运,大概率会是这两种结果

一个人如果舍不得扔旧衣服,说明他的命运,大概率会是这两种结果

风起见你
2026-09-28 01:22:36
胡雪峰近况,定居江苏,身居高位,46岁胖了不少,家庭生活很幸福

胡雪峰近况,定居江苏,身居高位,46岁胖了不少,家庭生活很幸福

大西体育
2026-10-07 22:01:52
除了U23球员外,这3人有望重回国足!归化中场领衔,皇马旧将或取代布尼亚明

除了U23球员外,这3人有望重回国足!归化中场领衔,皇马旧将或取代布尼亚明

大卫的篮球故事
2026-10-07 18:36:31
王刚的洋女婿彼得:出身英国贵族,,“嫁”到中国,曾劝岳父离婚

王刚的洋女婿彼得:出身英国贵族,,“嫁”到中国,曾劝岳父离婚

悦君兮君不知
2026-10-07 02:34:58
俄罗斯这场“鼠疫疑云”,可能早在8月就已经开始了?

俄罗斯这场“鼠疫疑云”,可能早在8月就已经开始了?

爆角追踪
2026-10-06 13:24:51
丰田章男的孤独:新发动机一箱油跑1200公里,但世界不跟他玩了

丰田章男的孤独:新发动机一箱油跑1200公里,但世界不跟他玩了

麓谷隐士
2026-10-07 00:10:04
2026-10-08 04:27:00
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1501文章数 83关注度
往期回顾 全部

科技要闻

诺贝尔化学奖揭晓,两位科学家摘得大奖

头条要闻

中国新婚夫妇在马尔代夫度假溺亡 有人1天目睹2起溺水

头条要闻

中国新婚夫妇在马尔代夫度假溺亡 有人1天目睹2起溺水

体育要闻

从骑马舞到开口全中文 德约在北京不止七冠

娱乐要闻

蔡康永风波再升级!这次谁也救不了他

财经要闻

谷歌签下科技史上最大核能协议

汽车要闻

智能化再提升 2027款东风标致、东风雪铁龙新车更人性化了

态度原创

房产
时尚
手机
公开课
军事航空

房产要闻

保利大爆发,冲到榜一!海南楼市前三季度,热销榜出炉!

50套高智感通勤穿搭,怎么穿都时髦好看!

手机要闻

荣耀Power3再次被确认:7英寸屏+天玑8600,起售价或感人

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

外舰跟监遵义舰 结果自己先"趴窝"了

无障碍浏览 进入关怀版