題目網址:https://leetcode.com/problems/restore-ip-addresses/?tab=Description

題目的意思是就是給你一串String 問你可能有哪幾種IP組合。

Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

解法很單純就是多重迴圈而已沒什麼特別好講的,forEach而已,一直去看是否符合IP的條件,不符合就繼續找。(沒想到什麼特別好用的搜尋法)

附上通過證明。

/**
 * @param {string} s
 * @return {string[]}
 */


var restoreIpAddresses = function(s) {
    result = [];
    var len = s.length;
    for(var i = 1 ; i < 4 && i < len-2 ; i++){
        var s1 = s.substring(0,i);
        if(!isValid(s1))continue;
        for(var j = i+1 ; j < i+4 && j<len-1 ; j++){
            var s2 = s.substring(i,j);
            if(!isValid(s2))continue;
            for(var k = j + 1 ; k < k +4 && k<len ; k++){
                var s3 = s.substring(j,k);
                if(!isValid(s3))continue;
                var s4 = s.substring(k,len);
                if(!isValid(s4))continue;
                result.push(""+s1+"."+s2+"."+s3+"."+s4);
            }
        }
    }
    return result;
};
function isValid(n){
    return !((n.charAt(0)==='0'&&n.length>1) || n>255);
}

 

arrow
arrow

    Deyu 發表在 痞客邦 留言(1) 人氣()