黑马程序员_日记24_字符串获取计数练习
来源:互联网 发布:水滴淘宝互助平台 编辑:程序博客网 时间:2024/06/07 00:03
——- android培训、java培训、期待与您交流! ———-
/*获取一个字符串在另一个字符串中出现的次数。 例如:"kk"在"abkkcdkkefkkskk"中出现的次数分析功能:1 功能的结果:返回字符串1在字符串2中出现的次数------------返回值类型为int2 有没有未知变量:有两个。第一,字符串1;第二,字符串2。--参数类型(String str1,String str2)如何实现功能:"kk"在"abkkcdkkefkkskk"中出现的次数。先手动模拟一下功能的实现: 在长字符串中从左往右遍历查找短字符串“kk”,找到一个“kk”,就让计数器加1。在模拟过程中,用到了:1 计数器2 访问了字符串中的内容3 访问了字符串的脚标点评:上面那个模拟太简单了,不好写程序。。。参考一下毕老师讲解的思路:1 根据"kk"获取它在字符串中第一次出现的位置index;如果没有找到"kk",就结束;否则转第二步。2 "kk"的长度加上index就是下一个需要被查找的子串起始位;转第三步。3 根据第二步的结果做参数获取子串;转第四步。4 返回第一步。所以实现这个功能需要:1 定义一个计数器count2 获取"kk"在字符串中出现的位置index3 一个循环,循环条件是找不到"kk"就结束*/class getSubstringCountDemo { public static void main(String[] args) { //被访问的字符串 String str1 = "abkkcdkkefkkskk"; //关键字字符串 String key = "kk"; //获取key在str1中出现的次数 int count = getSubstringCount(str1,key); //方式2获取key在str1中出现的次数 int count_2 = getSubstringCount_2(str1,key); //方式3:利用split方法获取 int count_3 = getSubstringCount_3(str1,key); //打印结果 System.out.println("count :"+count); System.out.println("count_2:"+count_2); System.out.println("count_3:"+count_3); } //获取key在字符串str中出现的次数 public static int getSubstringCount(String str,String key) { //定义计数器 int count = 0; //定义key在str中第一次出现的位置 int index = str.indexOf(key);//方法int indexOf(int ch) //利用while循环进行查找,当"kk"在字符串中不存在的时候结束 while(index!=-1) { count++; str = str.substring(index+key.length());//用的是这个方法String substring(begin); index = str.indexOf(key);//获取key在子串中第一次出现的位置 } return count; } //下面给出方式2,主要是利用方法int indexOf(String str,int fromIndex) public static int getSubstringCount_2(String str,String key) { //定义计数器 int count = 0; //定义key在str中第一次出现的位置 int index = str.indexOf(key);//方法int indexOf(int ch) //利用while循环进行查找,当"kk"在字符串中不存在的时候结束 while(index!=-1) { count++; index = index + key.length();//新的起始位 index = str.indexOf(key,index);//利用方法int indexOf(String str,int fromIndex) } return count; } //下面给出一种错误的方式,就叫方式3 //利用split方法。String[] split(regex); public static int getSubstringCount_3(String str,String key) { int count = str.split(key).length;//注意不是length(),因为这里是获取String[]数组的长度 return count; } /* 利用方式3在本题虽然是对的,但是当字符串尾没有key的时候就会出现问题。 这是因为在对"abkkcdkkefkksk"进行切割后:得到了ab,cd,ef,sk。这时候字符串数组长度为5, 然而"kk"只出现了3次,所以这种方法不提倡! */}
0 0
- 黑马程序员_日记24_字符串获取计数练习
- 黑马程序员_日记23_字符串反转练习
- 黑马程序员_日记22_JavaStringTrim练习
- 黑马程序员_日记46_TreeSet练习
- 黑马程序员_日记60_TreeMap字符串中字符出现次数练习
- 黑马程序员_练习
- 黑马程序员_日记26_Java字典序排序练习
- 黑马程序员_日记38_LinkedList建立堆栈练习
- 黑马程序员_日记58_HashMap自定义对象存取练习
- 黑马程序员_日记59_TreeMap自定义对象练习
- 黑马程序员_字符串
- 黑马程序员_字符串
- 黑马程序员_字符串
- 黑马程序员_字符串
- 黑马程序员_字符串
- 黑马程序员_字符串
- 黑马程序员_字符串
- 黑马程序员_日记28_Java字符串缓冲区
- WebApi 返回小驼峰式 json 格式,并格式化日期
- 【猫猫的Unity Shader之旅】之透明材质
- CodeForces 217A Ice Skating(并查集思路)
- Android自定义视图——onMeasure流程,MeasureSpec详解
- Android自学问题集(一)------1.学习Intent
- 黑马程序员_日记24_字符串获取计数练习
- 解读敏捷 之 响应变化高于遵循计划
- JSF调试小志1-恢复视图阶段(RestoreViewExecutor)
- hiho之补提交卡
- websocket与node.js的完美结合
- 简单初步理解依赖注入
- Linux C/C++ 模板:类模板(主模板)
- 黑马程序员——iOS开发入门
- Android 实现图片自动缩放自定义控件