字符串的所有子字符串合集
来源:互联网 发布:淘宝 红包密令 编辑:程序博客网 时间:2024/05/16 23:01
今天好友问到一个问题就是给定一个字符串要求输出它的所有的子字符串,如给定abc,子字符串含有a、b、c、ab、bc、ac、abc;下面给出两种解决方案。
第一种是基于递归来实现的。
public static Set<String> pinjie(Set<String>all,Set<String>s,String str){for(int i =0 ;i<s.size();i++){all.add(str+s.toArray()[i]);}all.addAll(s);return all;}public static Set<String> getAll(String str){Set<String> s = new TreeSet<String>();if(str.length()==1){s.add(str);return s;}else{String first = str.substring(0,1);String remainStr = str.substring(1);s.add(first);return pinjie(s,getAll(remainStr),first);}}第二种思想是朋友想出来的,想法挺不错。就是利用字符串中字符的位置,如果该位置上有的话,就是1,没有就是0.对于给定的字符串,求出其长度,那么它所有的组合就是从0到2的str.length()-1次方。
public static Set<String> getAll2(String str){Set<String> s = new TreeSet<String>();int length = str.length();char c[] = str.toCharArray();for(int i = (int) (Math.pow(2, length)-1);i>0;i--){String binaryStr = Integer.toBinaryString(i);if(binaryStr.length()<length){//补充前面的0int addZeroNum = length-binaryStr.length();String zeroStr = "";for(int k = 0;k<addZeroNum;k++){zeroStr+="0";}binaryStr = zeroStr+binaryStr;}System.out.println(binaryStr);String subStr = "";for(int j = 0;j<binaryStr.length();j++){if(binaryStr.subSequence(j, j+1).equals("1")){subStr +=c[j];}}s.add(subStr);}return s;}
0 0
- 字符串的所有子字符串合集
- java 求解子数组子字符串的问题合集
- 求字符串的所有子字符串
- 合并字符串中所有的子字符串
- 字符串的子字符串集
- 求字符串的所有最大子串
- 求字符串的所有子串
- 输出字符串所有的子串
- 求取任意字符串的所有子序列
- 求字符串的所有子串
- 获取一个字符串的所有子串
- 寻找一个字符串的所有回文子字符串
- 字符串的排列组合算法合集
- Python中字符串的大小写合集
- 取所有子字符串位置
- 删除字符串中所有给定的子串,返回删除的子字符串的个数
- 编程实现删除字符串中所有给定的子串
- 删除字符串中所有给定的子串
- uboot相关知识点汇总(持续更新中)
- hdu 5433 Xiao Ming climbing bfs
- javaAPI文档翻译之Java.awt.BorderLayout
- Java集合工具
- cf 487C Prefix Product Sequence 构造+逆元
- 字符串的所有子字符串合集
- POJ 3253:Fence Repair
- 解决viewpager中一个fragment嵌套fragment出现重叠现象
- Android判断当前线程是否是主线程的方法
- 一、Android Studio Mac os 环境搭建 以及 名词解释
- Android 端滴滴打车接口的开发
- 堆和栈的区别(转过无数次的文章)
- 附件上传图片缩小保存
- Apple 的音乐推荐做得还是蛮有特色的