题目:牛客网 NC23053 月月查华华的手机
题目的大意是,给一个字符串A,以及N个字符串Bi,对于每一个Bi,询问其是否A的子序列。
错误1:混淆子序列和子串
本蒟蒻刚复习KMP,看到这道题就想套,却连样例都过不了,后来发现问的是子序列而不是子串。
子序列和子串的最大区别是,子串一定要连续的,而子序列可以不连续。例如,字符串"aeaijgoaeljo",它的子序列可以是"aea",也可以是"aio";但是"aio"不是它的子串。
思路1:暴力求解
对于每一个Bi,都遍历一次A寻找Bi中的每一个字母。用a维护在字符串A中遍历到的位置,用b维护在字符串Bi中正在寻找的位置。
例如,A="noiauw" B1="oaw"
刚开始,a=0(指向n),b=0(指向o)。
然后保存b不动,a一直++,直到找到A中的第一个字母"o"为止,这时b就要++,表示要在A中寻找B的下一个字母的位置了