-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathExtraCharactersInAString.java
More file actions
29 lines (29 loc) · 1007 Bytes
/
ExtraCharactersInAString.java
File metadata and controls
29 lines (29 loc) · 1007 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
int dp[] = new int[50];
public int minExtraChar(String s, String[] dictionary) {
int n = s.length();
Arrays.fill(dp,-1);
HashSet<String> dictionarySet = new HashSet<>(Arrays.asList(dictionary));
return recur(s,dictionarySet,0);
}
public int recur(String s, HashSet<String> dictionary, int index){
if(index==s.length()){ //empty string
return 0;
}
if(dp[index]!=-1){
return dp[index];
}
StringBuilder sb = new StringBuilder();
int minExtraChar = Integer.MAX_VALUE;
for(int i=index;i<s.length();i++){
sb.append(s.charAt(i)); //l
int extraChar = 0;
if(!dictionary.contains(sb.toString())){
extraChar = sb.length();
}
int curExtra = recur(s,dictionary,i+1);
minExtraChar = Math.min(minExtraChar,extraChar + curExtra);
}
return dp[index] = minExtraChar;
}
}