2022年没封网站直接进入,合肥seo,wordpress注册页面主题,网站开发英文论文资料例题#xff1a; 分析#xff1a; 题目的意思就是#xff1a; 先给出一个字符串pattern#xff0c;要拿着pattern字符串和原始字符串#xff08;origin#xff09;比对#xff0c;若在origin中找到了pattern字符串#xff0c;则返回pattern字符串在原始字符串origin中的…例题 分析 题目的意思就是 先给出一个字符串pattern要拿着pattern字符串和原始字符串origin比对若在origin中找到了pattern字符串则返回pattern字符串在原始字符串origin中的下标。 先拿着pattern和origin从第一个字符开始依次比对。 单个字符比对若一致 继续往下比对其它字符。 直到找出第一个比对不成功情况此时可以把 i 向右移动一位i, j 回到0索引origin字符串从 i 1索引开始重新和pattern比对如下图 重复上述步骤在原始字符串origin中找到和pattern相同的部分返回当前索引 i 思路 可以使用两个循环来依次比对外层循环表示从原始字符串索引 i 开始和pattern进行比对 注意外层循环不必循环origin.length 次循环origin.length - pattern.length 次即可。 代码实现
package leetcode;public class StrStrLeetcode28 {public static int strStr(String haystack, String needle) {char[] pattern needle.toCharArray();char[] origin haystack.toCharArray();int i 0; //原始数组的索引int j 0; //模式数组的索引while(i origin.length - pattern.length){for (j 0; j pattern.length; j) {if(origin[i j] ! pattern[j]){break;}}if(j pattern.length){ //表示pattern字符串中的所有字符都成功匹配了originreturn i;}i;}return -1;}public static void main(String[] args) {System.out.println(strStr(aaacaaab, aaab));}
}