问题描述:
输入一个字符串。
输入的字符串仅由'0'和'1'组成,比如'10100011101'这样的。
从输入的字符串中截取一段连续的片段作为子串,且子串满足从左往右数,'0'的个数总是不比'1'少。
输出其满足条件的最长的子串的长度。
下面是JavaScript的实现:
function subString(str){
var arr = str.split('');
var result = 0;
(function loop(i){
if (result + i <= arr.length && arr[i] !== '0'){
loop(i+1);
} else if ( result + i <= arr.length ) {
var l = 1;
var subLength = 1;
(function subLoop(k){
if( l > 0 || arr[k] === '0' && k < arr.length ){
subLength++;
l += arr[k]==='0' ? 1 : -1;
result = result>subLength ? result : subLength;
subLoop(k+1);
} else if ( k < arr.length ) {
loop(i+1)
}
}(i+1))
}
}(0))
return result;
}
解决思路:穷举从第i
个字符开始的所有满足条件的最长字符串,取其中最长的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。