package pep.Day83;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
public class LeetCode_140_Word_Break_2 {
public static void main(String[] args) {
String s = "catsanddog";
List<String> wordDict = Arrays.asList("cat", "cats", "and", "sand", "dog");
System.out.println(wordBreak(s, wordDict));
}
public static List<String> wordBreak(String s, List<String> wordDict) {
HashSet<String> set = new HashSet<>();
int maxLen = 0;
for (String ss : wordDict) {
set.add(ss);
maxLen = Math.max(maxLen, ss.length());
}
int n = s.length();
boolean[] dp = new boolean[n + 1];
// yha tak ka word present hai, yha se check krna start kr do
dp[0] = true;
for (int i = 0; i <= n; i++) {
if (dp[i] == true) {
for (int l = 1; l <= maxLen && i + l <= n; l++) {
String sb = s.substring(i, i + l);
if (set.contains(sb)) {
dp[i + l] = true;
}
}
}
}
List<String> ans = new ArrayList<>();
// koi answer hi nhi mila to return empty List
if (dp[n] == false)
return ans;
// recursion call lagaenge ki mujhe answer laa kr de de
helper(ans, 0, "", s, set, dp, maxLen);
return ans;
}
public static void helper(List<String> ans, int i, String asf, String s, HashSet<String> set, boolean[] dp, int maxLen) {
if (i >= s.length()) {
ans.add(asf.substring(0, asf.length() - 1));
return;
}
for (int l = 1; l <= maxLen && i + l <= s.length(); l++) {
// agr (0,2) wala substring milta tha to hum 3 index pr TRUE mark krte the
// hence, hum dp me check krenge
if (dp[i + l]) {
String ss = s.substring(i, i + l);
if (set.contains(ss)) {
helper(ans, i + l, asf + ss + " ", s, set, dp, maxLen);
}
}
}
}
}
Sunday, May 29, 2022
Leet Code 140. Word Break II
Subscribe to:
Post Comments (Atom)
Diagonal Traversal
eg. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Output: 1 6 11 16 2 7 12 3 8 4 Approach:...
-
https://leetcode.com/problems/reverse-integer/description/ Integer.MAX_VALUE = 2,147,483,647 = 2 31 - 1 Integer.MIN_VALUE = -2,147,483,64...
-
https://leetcode.com/problems/two-sum/description/ Given the constraints: 2 <= nums.length <= 10⁴ -10⁹ <= nums[i] <= 10⁹ -10...
-
For this particular question, we only have the In - region. So, the code looks like : package pep.Day7 ; public class TowerOfHanoi { p...

No comments:
Post a Comment