字符串中查找包含字串的次数的算法
2014-03-10 10:57
471 查看
·鄙人在深入学习String时遇到一个问题:如何查找一个字符串中包含某个子字符串的次数
我想到了一个新算法(可能不新了,已经被别人用过了也有可能),就是:把原字符串后面拼接一个非要查找的字串后用String的split方法把原字符串放进一个字符串数组里,然后求该数组的长度然后减去1即为原字符串中所包含字串的次数;
·举例:
public class Split {
public static void main(String args []){
//String a = "javakflsdljavads;kfjavadsflsjfjavajavajavajava";
String a = "javakflsdljavads;kfjavadsflsjfjavajavajavajavatest";
String ar[] = a.split("java");
System.out.println(ar.length-1);
}
}
·解释:后面加上一个除要查找的子串外的任意一个字符串的原因是为了防止出现类似如下的字符串情况
要查找的原字符串为:"javakflsdljavads;kfjavadsflsjfjavajavajavajava";而子串为java这时候用split方法后会把字符串后面那部分省略掉,所以要拼接一个不是字符串"java"的并且也不是以"java"结尾的字符串;我们讨论的情况是子串和远串不一样的情况;
·小结:这种算法感觉比那种用循环截取字符串来计算原串包含子串的次数的方法要更直观,更好理解。有错误或者不妥的地方敬请批评指正,共同进步。
我想到了一个新算法(可能不新了,已经被别人用过了也有可能),就是:把原字符串后面拼接一个非要查找的字串后用String的split方法把原字符串放进一个字符串数组里,然后求该数组的长度然后减去1即为原字符串中所包含字串的次数;
·举例:
public class Split {
public static void main(String args []){
//String a = "javakflsdljavads;kfjavadsflsjfjavajavajavajava";
String a = "javakflsdljavads;kfjavadsflsjfjavajavajavajavatest";
String ar[] = a.split("java");
System.out.println(ar.length-1);
}
}
·解释:后面加上一个除要查找的子串外的任意一个字符串的原因是为了防止出现类似如下的字符串情况
要查找的原字符串为:"javakflsdljavads;kfjavadsflsjfjavajavajavajava";而子串为java这时候用split方法后会把字符串后面那部分省略掉,所以要拼接一个不是字符串"java"的并且也不是以"java"结尾的字符串;我们讨论的情况是子串和远串不一样的情况;
·小结:这种算法感觉比那种用循环截取字符串来计算原串包含子串的次数的方法要更直观,更好理解。有错误或者不妥的地方敬请批评指正,共同进步。
相关文章推荐
- js 判断字符串是否包含某字符串,String对象中查找子字符indexOf,查找字符串出现的次数split
- 面试:字符串集合 查找包含算法 的素数方案
- 查找一个字符串中包含另外一个字符串的次数
- 算法:编程在一个已知的字符串中查找最长单词,假定字符串中只包含字母和空格,空格用来分隔不同单词
- 字符串查找匹配算法的一种Java实现
- 华为OJ 公共字串计算&&查找两个字符串a,b中的最长公共子串
- 字符串处理算法(一)检测输入字符串中是否包含连续的或者离散的test
- 求一个字符串中出现次数最多的字符的高效算法
- 【算法学习】KMP查找匹配字符串
- 查找字符串中出现次数最多的字符
- 查找包含指定字符串的文件
- 字符串匹配算法(在字符串T中查找是否有与字符串P相同的子串)
- 数据结构——算法之(042)(字符串移位包含的问题, s1是否可以由s2移位后得到)
- 查找目录下所有文件中是否包含某个字符串
- 转 Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
- 查找一个字符串中每个单词的出现次数--Java
- 【算法剖析】求字符串中无重复字符的最长字串
- grep 用法--查找哪个文件中包含某行字符串
- find grep xargs 查找某目录下包含某字符串的文件
- 查找一个字符串里,出现次数最多的字符,时间复杂度O(n)