一、题目描述
给定字符串target和source,判断target是否为source的子序列。你可以认为target和source 中仅包含英文小写字母,字符串source可能会很长,长度~=500,000,而target是个短字符串,长度<=100。
字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置。形成的新字符串,例如,'abc’是’aebycd’的一个子序列,而’ayb’不是。请找出最后一个序列的起始位置。
二、输入描述
第一行输入字符串target;
第二行输入原始字符串source;
比如:
abc
abcaybec
三、输出描述
请找出最后一个序列的起始位置。
3
abcaybec中第0位的abc也匹配,但却不是最后匹配的序列。abcaybec中第3位的aybec去掉字符y、e后也为abc,也与目标字符串相符,故输出最后一个序列aybec的第一个字符的索引位置3。
四、解题思路
- 第一行输入给定字符串target;
- 第二行输入原始字符串source;
- 倒序遍历target和source;
- 判断字符串子序列;
- 如果字符相等,则遍历target和source的下一个index;
- 没有找到相等的字符,继续向左遍历source字符串;
- 当i==0时,遍
该博客介绍了如何在华为OD机试中解决判断字符串子序列的问题,采用倒序遍历的方法。博主分享了详细的解题思路、Java算法源码和效果展示,强调了在长字符串中寻找最后一个匹配子序列的起始位置。
订阅专栏 解锁全文
291






