A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mirror 中级黑马   /  2014-7-27 15:57  /  986 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

可以使用String类中的indexOf方法检测一个字符串是否是另一个字符串的子串。编写自己的方法实现这个功能。编写一个程序,提示用户输入两个字符串,检测第一个字符串是否是第二个字符串的子串

1 个回复

正序浏览
  1. public class StringIndexOf {

  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub
  4.                 String s = "Hello";
  5.                 System.out.println(indexOf(s, "ello"));
  6.                 System.out.println(indexOf(s, "eklo"));

  7.         }
  8.        
  9.         public static boolean indexOf(String src, String target) {
  10.                 if (src == null || target == null)
  11.                         return false;
  12.                 int lenSrc = src.length();
  13.                 int lenTarget = target.length();
  14.                
  15.                 if (lenSrc < lenTarget)
  16.                         return false;
  17.                
  18.                 // 从src字符串的第i个字符开始,看是否能匹配target字符串。
  19.                 // i的范围可以是[0, lenSrc - 1],当然也可以略作优化,要求src从i开始的子串长度不小于target的长度
  20.                 Outer:
  21.                 for (int i = 0; lenSrc - i >= lenTarget; i++) {
  22.                         // 匹配target字符串的首字符后,进入内层循环匹配target字符串的剩余字符
  23.                         if (src.charAt(i) == target.charAt(0)) {
  24.                                 int j = 1;
  25.                                 while (j < lenTarget) {
  26.                                         // 有一个字符不匹配就重新返回外层循环,从src的第i+1个字符开始尝试匹配
  27.                                         if (src.charAt(i + j) != target.charAt(j))
  28.                                                 continue Outer;
  29.                                         j++;
  30.                                 }
  31.                                 // 从src的第i个字符开始完全匹配target,返回true
  32.                                 return true;
  33.                         }
  34.                 }
  35.                 // 从src的每个字符开始都无法匹配target,返回false
  36.                 return false;
  37.         }
  38. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马