93. Restore IP Addresses
June 24, 2025
04:33 AM
No headings found
Loading content...
No headings found
Problem
Bài toán yêu cầu tách một chuỗi số thành các địa chỉ IP hợp lệ (4 phần, mỗi phần từ 0 đến 255, không có số 0 ở đầu trừ khi là "0"). Để giải, ta dùng backtracking (quay lui), thử mọi cách chia chuỗi thành 4 phần, kiểm tra tính hợp lệ từng phần, và thu thập kết quả
Appproach
Time and space complexity
Solution
1function restoreIpAddresses(s: string): string[] {
2 const res: string[] = [];
3 const n = s.length;
4 function backtrack(start: number, path: string[]) {
5 if (path.length === 4 && start === n) {
6 res.push(path.join('.'))
7 return;
8 }
9
10 if (path.length === 4) return;
11
12 for (let len = 1; len <= 3; len++) {
13 if (start + len > n) break;
14 const part = s.substring(start, start + len);
15 if ((part.length > 1 && part[0] === '0') || +part > 255) continue;
16 path.push(part);
17 backtrack(start + len, path);
18 path.pop()
19 }
20 }
21
22 backtrack(0, [])
23 return res
24};backtrack(start, path) duyệt từ vị trí start của chuỗi, với các phần đã tách trong path