笔试题--求正确的 IP 地址

题目描述:给一串数字求出所有可能的 IP 地址

例:
输入 25525511135
输出 255.255.11.135 255.255.111.35

解题思路:
我暂时想到的只有一种最苯的方法就是不停循环然后输出所有可能值。
1. 判断是否为数字,然后判断长度如果为4或者16直接输出答案;
2. 定义变量 A,B,C,D他们代表 IP 地址的部分;
3. 求出 A 的所有可能值,然后 B 的起始位置是 A 的末位置,求出 B 的所有可能;
4. 按照求 B 的方法依次求出 C,D ;
5. 找出长度符合题目要求的 IP 地址输出即可。

示例代码:

var strings = '11223344';
var A = '';

if (strings.length === 4 && !isNaN(strings)) {
    console.log(strings[0] + '.' + strings[1] + '.' + strings[2] + '.' + strings[3]);

} else if (strings.length === 16 && !isNaN(strings)) {

    console.log(strings.slice(0, 4) + '.' + strings.slice(4, 8) + '.' + strings.slice(8, 12) + '.' + strings.slice(12, 16))
    ;
} else if (strings.length > 4 && strings.length < 16 && !isNaN(strings)) {

    for (var a = 0; a < 3; a++) {
        
        A += strings[a];
        
        if (parseInt(A) > 0 && parseInt(A) <= 255) {
            
            var B = '';
            
            for (var b = A.length; B.length < 6 - A.length; b++) {
                
                B += strings[b];
                
                if (parseInt(B) > 0 && parseInt(B) <= 255) {
                    
                    var C = '';
                    
                    for (var c = B.length + A.length; C.length < 9 - A.length - B.length; c++) {
                        
                        C += strings[c];
                        
                        if (parseInt(C) > 0 && parseInt(C) <= 255) {
                            
                            var D = '';
                            
                            for (var d = B.length + A.length + C.length; D.length < 12 - B.length - A.length - C.length; d++) {
                               
                                D += strings[d];
                               
                                if (parseInt(D) > 0 && parseInt(D) < 255) {
                                 
                                    if (A.length + B.length + C.length + D.length === strings.length) {
                                 
                                        console.log(A + '.' + B + '.' + C + '.' + D);
                                    }

                                }
                            }
                        }
                    }
                }
            }
        }
    }
} else {
    console.log('error')
}

备注:这是一种最苯的办法不可取的,暂时记录如果找到更好的方法再优化代码。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容