Last active
August 29, 2015 14:02
-
-
Save jikeytang/23466a3462f57ce3c434 to your computer and use it in GitHub Desktop.
[ Javascript ] - 20140618-题目1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 如何把一个字符串,用特定的符号有序的连接,列出所有连接可能。 | |
| 如:'ab' -> a-b, | |
| 'abc' -> a-bc, a-b-c, ab-c, | |
| 'abcd' -> a-bcd, ab-cd, abc-d,a-b-cd, ab-c-d,a-bc-d,a-b-c-d | |
| PS: | |
| 1. 回复时注意加上下面这句话,才会有语法高亮或格式缩进。 | |
| ```javascript | |
| // you code | |
| ``` | |
| 2. 粘贴代码时请使用shift+tab,缩进前面的空白。 |
zhishaofei3
commented
Jun 18, 2014
//思路分析:字符串的字符间是加“-"的位置,位置数为posLen=str.length-1;
//添加字符的所有情况是2的posLen次幂,将这些位置转成所有二进制形式(前置有0),
//如:0001表示有5个字符,4个位置,最后一个位置上加"-",依次处理所有情况,得到所有结果
var str = 'abcde';
function opStr(str) {
var len = str.length,
binary = allBinary(len - 1),//所有二进制形式
bLen = binary.length;
var strArr = str.split('');
var tempArr = [];
for (var j = 0; j < bLen; j++) { //对所有二进制形式
tempArr[j] = [];
for (var i = 0; i < len; i++) { //字符串,的处理
tempArr[j].push(strArr[i]) //先把第一个字符加入,然后判断第一个字符后的位置是0、1,如果是1,加上"-"
//由于字符串长度,比位置多1,因此加上i < len - 1;判断
if(i < len - 1 && binary[j][i] == 1) {
tempArr[j].push('-');
}
}
tempArr[j] = tempArr[j].join('');
}
return tempArr;
}
function allBinary(len) {
var all = [], pow = Math.pow(2, len);
for (var i = 1; i < pow; i++) {
var parBinary = parseInt(i, 10).toString(2),
pLen = parBinary.length;
var res = (pLen < len) ? Array(len - pLen + 1).join('0') + parBinary : parBinary;
all.push(res);
}
return all;
}
var res = opStr(str);
console.log(res)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment