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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 卡斯特隋隋隋 于 2012-4-23 14:01 编辑

学习是一件十分快乐的事情。内容仅代表个人观点,仅供参考。为了黑马努力着!



package suisuisui.day15;
/* * 求一个子串在整串中出现的次数。 * "nbaernbatynbauinbaopnba" *

* 思路:     

*  1:要判断要查找的子串key是否存在于给定字符串中及出现的位置,我们用可以用indexOf这个函数来完成,

*  2:首先我们定义一个变量num作为计数器来标记key出现的次数,用index来记录key在函数中出现的位置。

*  3:当key不在给定的字符串中时indexof将返回-1,我们用这个来判断num是否++。

*     4:indexOf(String str,int fromIndex),可以从指定位置查抄字符串丙返回index,所以我们要指定formIndex的

*    值,当查找到key时,num++,并且将下次查找的起始点定位为index+key。

*    5:由于我们要记录次数,所以我们要循环判断。

* */

  1. public class Test1 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                
  7.                 String str = "nbaernbatynbauinbaopnba";
  8.                 String key = "nba";
  9.                 System.out.println(key + "出現的次数: " + getKey(str,key));
  10.         }

  11.         public static int getKey(String str, String key) {
  12.                 int num = 0;//定义变量计数器标记出现的次数
  13.                 int index = 0;//初始化index值为0;       
  14.                 while((index=str.indexOf(key,index))!=-1){//将查找到key返回的值付给index,丙判断是否=-1
  15.                         num++;//找到了一个,计数器加一。                       
  16.                         index=index+key.length();        //下一次查找从index+key处开始查找。
  17.                         if (index > str.length())//交表越界,退出循环
  18.                                 break;
  19.                 }               
  20.                 return num;
  21.         }

  22. }

  23. /**
  24. int indexOf(int ch)
  25. 返回指定字符在此字符串中第一次出现处的索引。
  26. int indexOf(int ch, int fromIndex)
  27. 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
  28. int indexOf(String str)
  29. 返回指定子字符串在此字符串中第一次出现处的索引。
  30. int indexOf(String str, int fromIndex)
  31. 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。

  32. */
复制代码


评分

参与人数 2黑马币 +15 收起 理由
职业规划-刘倩老师 + 10 不错的分享,赞一个!
李强 + 5 很给力!

查看全部评分

3 个回复

倒序浏览
就冲着我画的图也得给分啊{:soso_e102:}
有些老师没讲到 是自己加的
回复 使用道具 举报
那个if判断没有必要吧,前面的while就可以保证找不到直接结束了
回复 使用道具 举报
郑光 发表于 2012-4-25 00:49
那个if判断没有必要吧,前面的while就可以保证找不到直接结束了

public boolean contains(CharSequence s)当且仅当此字符串包含指定的 char 值序列时,返回 true。

返回:
如果此字符串包含 s,则返回 true,否则返回 false

抛出:
NullPointerException - 如果 s 为 null

空的话 就得在里面try catch。没有必要。空串直接返回,节省内存空间
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马