93. Restore IP Addresses
Tags:
Medium
Skills:
Stringbacktrack
Type:
Free
June 24, 2025
04:33 AM
No headings found
Loading content...
Related Posts
Leetcode
No headings found
Related Posts
Leetcode
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