问题描述:

  1. 输入一个字符串。

  2. 输入的字符串仅由'0'和'1'组成,比如'10100011101'这样的。

  3. 从输入的字符串中截取一段连续的片段作为子串,且子串满足从左往右数,'0'的个数总是不比'1'少。

  4. 输出其满足条件的最长的子串的长度。

下面是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个字符开始的所有满足条件的最长字符串,取其中最长的。


20160224
1 声望0 粉丝