问题来源:Problem - 2087
问题描述:
问题描述
思路分析:
思路一:
最开始遇到这道题,就是想到用匹配的方式去做。
但这道题与常见的匹配问题又不太一样,我们常见的匹配问题是在字符串A中找到多少个与B字符串相同的问题,除了第一个字符,其他字符可以参与多次匹配。而由这道题的输出样式可以看出,如果已经匹配了的字符,就不再参与匹配。如题目中输入“aaaaaa aa”,输出的结果是3。
这道题,采用循环的方法,我将字符串B中的字符,依次和字符串A中的字符进行匹配,设置一个变量r1来记录字符串相同的个数,设置一个变量r2来记录字符相同的个数,如果r2和字符串B的长度相等,则说明匹配到了,变量r1加1,下一次字符串A开始的位置则是当前字符串A的位置加上字符串长度的位置,循环结束后,输出r1,就是能够找到的个数。
实现代码:
思路一代码
思路二:
在网上看到一种更加简单的方法。将字符串A中与字符串B相同的子字符串用空格代替,用字符串C来表示。最后,通过(字符串A的长度-字符串C的长度)/字符串B的长度,这样就可以直接找出相同字符串的个数了,方便快捷。
实现代码:
思路二代码