AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3115. 有效子字符串

简单通过率 36% · 提交 1,259 · 通过 450
贪心双指针字符串

小慕正在处理两个字符串:一个叫 S,一个叫 L,它们都只包含小写字母。S 的长度不超过 100,L 的长度不超过 500000。小慕需要判断 S 是否是 L 的一个。 判定规则是:S 中的每一个字符,都能在 L 中按顺序找到(可以不连续),并且这些字符在 L 中出现的先后顺序必须与 S 中的顺序一致。 举个例子:S = "ace" 是 L = "abcde" 的一个有效,因为字符 a、c、e 在 L 中按顺序出现。而 "aec" 就不是有效子序列,因为 e 出现在 c 之前,顺序不一致,此时只有 a 和 e 符合位置要求。

提示:带虚线的词点一下有通俗解释。

输入描述

输入两个字符串<code>S</code>和<code>L</code>,都只包含小写字母,<code>len(S) <= 100</code>,<code>len(L) <= 500000</code>,先输入<code>S</code>再输入<code>L</code> 每个字符串占一行。 </div> </div> <span data-lark-record-data="{"rootId":"TFMqdo6ipoL5OixddjhcsCVRnZd","text":{"initialAttributedTexts":{"text":{"0":"输入两个字符串S和L,都只包含小写字母,len(S) <= 100,len(L) <= 500000,先输入S再输入L\n每个字符串占一行。"},"attribs":{"0":"*0+7*0*1+1*0+1*0*1+1*0+a*0*1+d*0+1*0*1+g*0+4*0*1+1*0+3*0*1+1*0|1+1*0+9"}},"apool":{"numToAttrib":{"0":["author","7115054903550050305"],"1":["inlineCode","true"]},"nextNum":2}},"type":"text","referenceRecordMap":{},"extra":{"mention_page_title":{},"external_mention_url":{}},"isKeepQuoteContainer":false,"isFromCode":false,"selection":[{"id":9,"type":"text","selection":{"start":0,"end":69},"recordId":"GUIUd2yy6oe4SuxYgSJccSS5neV"}],"payloadMap":{},"isCut":false}" data-lark-record-format="docx/text" class="lark-record-clipboard"></span>

输出描述

<code>S</code>串<strong>最后一个有效字符</strong>在<code>L</code>中的位置,首位从<code>0</code>开始计算。无有效字符返回 <code>-1</code> </div> </div> <span data-lark-record-data="{"rootId":"TFMqdo6ipoL5OixddjhcsCVRnZd","text":{"initialAttributedTexts":{"text":{"0":"S串最后一个有效字符在L中的位置,首位从0开始计算。无有效字符返回 -1"},"attribs":{"0":"*0*1+1*0+1*0*2+8*0+1*0*1+1*0+8*0*1+1*0+d*0*1+2"}},"apool":{"numToAttrib":{"0":["author","7115054903550050305"],"1":["inlineCode","true"],"2":["bold","true"]},"nextNum":3}},"type":"text","referenceRecordMap":{},"extra":{"mention_page_title":{},"external_mention_url":{}},"isKeepQuoteContainer":false,"isFromCode":false,"selection":[{"id":11,"type":"text","selection":{"start":0,"end":36},"recordId":"PCqsdCCYCo8UwMx6BqCcLy2YnKb"}],"payloadMap":{},"isCut":false}" data-lark-record-format="docx/text" class="lark-record-clipboard"></span>

示例

示例 1

输入

ace
abcde

输出

4

示例 2

输入

fgh
abcde

输出

-1

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
有效子字符串判定示例 S = "ace" a c e L = "abcde" a b c d e ← 最后一个有效字符位置 = 4
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「有效子字符串」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。