题目

字符串匹配
给你⼀个仅包含⼩写字⺟的字符串主串S = “abcacabdc”,模式串T = “abd”,请查找出模式串在主串第⼀次出现的位置
提示:主串和模式串均为⼩写字⺟且都是合法输⼊
示例:
S = “abcacabdc”
T = “abc”
返回 1

S = “abcacabdc”
T = “abd”
返回 6

代码

  1. BF算法
  2. public static void fun1() {
  3. String s = "abcacabdc";
  4. String t = "abb";
  5. int i=0;
  6. int j=0;
  7. int start=0;
  8. while (i<s.length()&& j<t.length()){
  9. if(s.charAt(i)==t.charAt(j)){
  10. i++;
  11. j++;
  12. }else {
  13. start++;
  14. i=start;
  15. j=0;
  16. }
  17. }
  18. System.out.println("i="+i);
  19. System.out.println("j="+j);
  20. if(j==t.length()){
  21. //结果打印
  22. System.out.println(start+1);
  23. }else {
  24. //没有匹配上
  25. System.out.println("-1");
  26. }
  27. }