字符串组合
来源:互联网 发布:java微信怎么登陆 编辑:程序博客网 时间:2024/05/16 14:56
以一个简单的字符串题开始我的博客。
题目:输入一个字符串,给出这个字符串中字符的组合。如:输入abc,它的组合有a、b、c、ab、ac、bc、abc。
分析:对于每个字母都有两种选择,选他或者不选他,我们可以用一个二进制位表示选择情况,1表示选择,0表示不选择,如ab = 110, c = 001, abc = 111。而且abc我们可以通过ab和c这两个字符串相加得到。所以我们可以通过自底向上的方法,缓存中间结果,省去不必要的重复计算。
代码:
#include <iostream>#include <string>#include <vector>#include <math.h>using namespace std;string strInput("abcd");void main(){int TableSize = 1;for (int i = 0; i < strInput.length(); ++i){TableSize *= 2;}//初始化字符串表,长度2^lengthvector<string> stringTable(TableSize);stringTable[0] = "";//currentBit用于标识现在处理的哪一位,currentNum用于标识应减去的最高位值,用于对子字符串的索引int currentBit = 0;int currentNum = 1;int inputLength = strInput.length();for (int i = 1; i < TableSize; ++i){if (i == currentNum * 2){++currentBit;currentNum *= 2;}//索引子字符串int substrIndex = i - currentNum;stringTable[i] = strInput.substr(inputLength - currentBit - 1, 1) + stringTable[substrIndex];}}
- 字符串组合
- 字符串组合
- 字符串组合
- 字符串组合
- 字符串组合
- 字符串组合
- 组合字符串
- 组合字符串
- 字符串组合
- 字符串-组合
- 字符串组合的程序
- C# 字符串排序组合
- 字符串组合问题
- 字符串的组合
- 组合框和字符串
- 字符串的组合
- 字符串的组合
- 字符串的组合
- 史无前例的 HTML5 资源参考指南
- 如何解决RichView导出Html看不到中文问题
- 演化理解 Android 异步加载图片
- 联想ThinkPad X1将推Hybrid版 可运行Android
- gcc常用参数解析【学习笔记】
- 字符串组合
- 内核模块 参数
- RMAN-06091: no channel allocated for maintenance(of an appropriate type)
- Ubuntu11.04之Wine下完美安装QQ 2010
- 再次呼唤大家一起来开源
- ubuntu eclipse svn
- 【解决方案】——关于将计算机应用程序(即所有.exe文件)的默认打开方式更改为其他的应用程序(譬如IE,暴风,etc)打开
- 最大子序列问题
- Activity之间通信