Hiện tại mình đang có 1 bài toán như sau:
Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for “abcabcbb” is “abc”, which the length is 3. For “bbbbb” the longest substring is “b”, with the length of 1.
Hướng giải quyết bài này của mình là:
Giả sử có 1 chuỗi a0…aN, ta so sánh bắt đầu từ a0.
- Nếu a0 != a1 thì ta sẽ cho a0a1 thành 1 nhóm sau đó xét tiếp tục vs a2, nếu a0a1 != a2 thì tiếp tục xét nhóm a0a1a2 vs a3,…aN.
- Nếu trong quá trình chạy, xuất hiện a[i] == a[j] thì sẽ xuất ra chuỗi a0…ai và lại tiếp tục xét từ a[i+1] cho đến hết.
ví dụ:
Có chuỗi
1 2 2 1 4 3 1 5 6 2 1 2 4 5 8
a1 != a2
a2 == a3
-> a1 a2 = 1 2
tiếp tục từ a3
a3 != a4
a4 != a5
a5 != a6
a6 != a7 and a4 == a7
-> a3 a4 a5 a6 = 2 1 4 3
tiếp tục từ a5
a5 != a6
a6 != a7
a7 != a8
a8 != a9
a9 != 1a10
a10 != a11 and a7 == a11
-> a5-6-7-8-9-10 = 4 3 1 5 6 2
tiếp tục từ a8
a8 != a9
a9 != 1a10
a10 != a11
a10 != a11
a11 != a12 and a10 == a12
-> a8-9-10-11 = 5 6 2 1
tiếp tục từ a11
a11 != a12
a12 != a13
a13 != a14
a14 != a15
->a11-12-13-14-15 = 1 2 4 5 8
chuỗi có độ dài nhất là a5-6-7-8-9-10 , length = 6
Ý tưởng là vậy nhưng hiên tại vẫn chưa biết viết thuật giải và code ra sao cả, mong ae có ý kiến thông não. mình là newbie





83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?