Cho một chuỗi ký tự s và một mảng danh sách từ điển wordDict chứa các từ duy nhất.
Hãy xác định xem có thể phân tách s thành một chuỗi các từ liên tiếp có nghĩa, trong đó mỗi từ đều nằm trong từ điển wordDict hay không.
Lưu ý: Các từ trong từ điển có thể được tái sử dụng nhiều lần trong quá trình phân tách.
Ví dụ 1:
Input:
s = 'leetcode'
wordDict = ['leet', 'code']
Output: true
Giải thích: 'leetcode' có thể tách thành 'leet code'.
Ví dụ 2:
Input:
s = 'applepenapple'
wordDict = ['apple', 'pen']
Output: true
Giải thích: 'applepenapple' = 'apple pen apple'.
Ví dụ 3:
Input:
s = 'catsandog'
wordDict = ['cats', 'dog', 'sand', 'and', 'cat']
Output: false
Định Dạng Đầu Vào (Input)
Dòng 2: Mảng các từ wordDict
Định Dạng Đầu Ra (Output)
Ràng Buộc (Constraints)
1 <= s.length <= 3001 <= wordDict.length <= 1000
Ví Dụ Kiểm Thử Mẫu
"leetcode"
["leet", "code"]
true
"applepenapple"
["apple", "pen"]
true
"catsandog"
["cats", "dog", "sand", "and", "cat"]
false
Quy Hoạch Động Tiền Tố O(n^2)
Gọi dp[i] là true nếu chuỗi tiền tố s[0..i] có thể tách từ hợp lệ.
dp[i] = true nếu tồn tại j < i sao cho dp[j] == true và s[j..i] in wordDict.
Bấm Chạy thử để kiểm tra các bộ test mẫu hoặc Nộp bài để chấm điểm chính thức.



