`
出云羲仪
  • 浏览: 1158 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

利用二进制, 取字符串的非空子集

阅读更多
public class BinaryAlgorithm {
	
	
	/**
	 * 在linux系统中 1,2,4分别代表 执行,写入,读取
	 * 实际上是二进制中
	 * 0001
	 * 0010
	 * 0100
	 * 可以看出任意非空子集的和 各不相同
	 * 利用这样的特性可以计算 一个集合的子集
	 */
	public List<String> getStrSubstringSet(String str){
		List<String> result = new ArrayList<String>();
		
		char[] chars = str.toCharArray();
		int length = chars.length;//字符串长度
		int countStr = 2<<length - 1;//有多少非空子集
		
		for (int i = 1; i <= countStr; i++) {
			String binaryString = Integer.toBinaryString(i);//把子集个数转化为二进制
			
			int zeroCount = length - binaryString.length();
			for (int j = 0; j < zeroCount; j++) binaryString = "0"+binaryString;//把长度补齐和字符长度一致
			
			char[] binaryStr = binaryString.toCharArray();//二进制的字符串
			StringBuilder sb = new StringBuilder();
			for (int j = 0; j < binaryStr.length; j++) {
				if(binaryStr[j]=='1') sb.append(str.charAt(j));//如果这里是1的话就记录下来
			}
			result.add(sb.toString());
		}
		return result;
	}
	
	
	public static void main(String[] args) {
		BinaryAlgorithm ba = new BinaryAlgorithm();
		System.out.println(ba.getStrSubstringSet("abcd"));
	}
}

 

分享到:
评论

相关推荐

    计数二进制子串(字符分组python)1

    在给定的问题中,我们需要编写一个名为`countBinarySubstrings`的Python函数,该函数接收一个二进制字符串`s`作为输入,然后计算并返回具有相同数量连续0和1的非空子字符串的数量。这里的“相同数量”指的是子字符串...

    LeetCode 计数二进制子串.docx

    这道题目要求我们编写一个算法,来计算给定二进制字符串中具有相同数量连续0和1的非空子串的数量。这里的“相同数量”是指子串中的0和1都是连续的,而且它们的数量相等。例如,对于输入字符串 "00110011",有效的...

    NOIP2017初赛普及组C++习题.pdf

    14. **字符串子串**:字符串"copyright"有46个子串,包括自身和所有非空子串。 15. **二进制转换**:十进制小数13.375对应的二进制是1101.011。 16. **栈的性质**:栈是后进先出的数据结构,根据入栈顺序,合法的...

    NOIP2008 提高组初赛试题C++

    3. **字符串S的非空子串数目** - 正确答案:A. 29 - 解析:对于字符串“Olympic”,其长度为7。一个长度为n的字符串,其所有可能的非空子串总数为n*(n+1)/2。因此,“Olympic”的非空子串数量为7*(7+1)/2 = 28。...

    十四届全国青少年信息学奥林匹克联赛初赛试题

    3. 字符串子串:计算字符串的非空子串数目,例如S="Olympic"有17个非空子串。 4. 完全二叉树:对于一个有2*N-1个结点的完全二叉树,叶节点数是N。 5. 数组排序:通过交换元素最小化排序次数,例如数组{8, 23, 4, 16,...

    NOIP2008提高组初赛试题-C++含答案---改动(2021.08.20).pdf

    3. 字符串S="Olympic"的非空子串数目,包括所有可能的连续子字符串,从1个字符到整个字符串本身,总计17种。 4. 完全二叉树的叶节点数可以通过公式2*N-(2*N-1)/2计算得出,N表示总节点数,所以当有2*N-1个结点时,叶...

    第十四届全国青少年信息学奥林匹克联赛初赛试题NOIPCSP竞赛比赛CSP考级.pdf

    - **知识点**:掌握计算字符串非空子串数量的方法,以及如何通过数学公式解决此类问题。 **4. 完全二叉树有 2*N-1 的结点,则它的叶子结点数目是( )。** - **解析**:完全二叉树的叶子结点数可以根据其节点总数...

    NOIP2008初赛普及组C++题目及答案.pdf

    9. **字符串子串**:字符串"Olympic"的非空子串总数包括所有可能的首字符开始的字符串,加上空字符串,总共是17个。 10. **Web2.0**:Web2.0强调用户交互和内容共享,Flickr是一个典型代表,而Sina、Yahoo和Google...

    【精选资料】noip初赛试题及答案.pdf

    - 对于长度为n的字符串,其非空子串的总数为(n*(n+1))/2。 - 所以,S的非空子串数目为(7*8)/2 = 28。 **正确答案**:B.28 #### 4. 完全二叉树的叶子结点数目 - **知识点**: - 完全二叉树是指除了最后一层外...

    NOIP2008初赛普及组C++题目及答案.docx

    9. **字符串子串**:一个字符串的非空子串是指由字符串中的字符组成的任意连续序列,包括自身。 10. **Web2.0**:Web2.0强调用户生成内容和互动分享,如Flickr支持用户上传和分享照片。 11. **递归与栈**:递归...

    【WMV课堂录像matlab】文件夹管理和文件IO操作.zip

    对于非结构化文本数据,`fprintf`可以用来输出字符串、数值等;而`fscanf`则可以从文件中读取特定格式的数据,如数值或日期。对于二进制数据,MATLAB提供了`fwrite`和`fread`,这两个函数可以高效地读写整数、浮点数...

    2008_初赛_试题_C++.pdf

    - 若字符串长度为n,则它的非空子串总数为n*(n+1)/2。 - 对于字符串"Olympic"而言,其长度为7,因此非空子串的数目为28。 #### 10. Web2.0的应用案例 - **知识点概述**:Web2.0是指互联网发展的一个阶段,强调...

    NOIP2012普及组初赛C++试题

    - **答案解析**:字符串“AAABBBCCC”的长度为9,可以形成的不同非空子串数目可以通过组合计算得出。该字符串由三个不同的重复序列组成,因此不同的非空子串总数为\(9+8+7+...+1=45\)种情况。 **20. 仿生学的问世...

    NOIP2008年第十四届全国青少年信息学奥林匹克联赛初赛试题普及组C++.docx

    9. **字符串子串**:字符串"S= "Olympic ""的非空子串数目可以通过计算所有可能的连续子串来得出,这里为17个。 10. **Web2.0应用**:Flickr是一个典型的Web2.0应用,强调用户生成内容和互动分享,而Sina、Yahoo和...

    CSP模拟试卷四模拟题附答案

    对于长度为n的字符串,其不同非空子串的数量可以通过组合数学的方法计算得出。 **6. C++中,125^2的值是()。** - **知识点解析:**此题考察C++中位运算符的使用。在C++中,"^" 表示异或运算而非指数运算。异或是按...

Global site tag (gtag.js) - Google Analytics