題目描述:給一串?dāng)?shù)字求出所有可能的 IP 地址
例:
輸入 25525511135
輸出 255.255.11.135 255.255.111.35
解題思路:
我暫時想到的只有一種最苯的方法就是不停循環(huán)然后輸出所有可能值趁舀。
1. 判斷是否為數(shù)字滞详,然后判斷長度如果為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')
}
備注:這是一種最苯的辦法不可取的理逊,暫時記錄如果找到更好的方法再優(yōu)化代碼。