Skip to content

Commit 82a0f7f

Browse files
committed
8.8.2023
1 parent c51a972 commit 82a0f7f

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

139. Word Break.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class Solution:
2+
def wordBreak(self, s, wordDict):
3+
dp = [False] * (len(s) + 1)
4+
dp[len(s)] = True
5+
6+
# Change wordDict to dictionary to have 0(1) time for finding
7+
word_dict = dict()
8+
min_len = len(wordDict[0])
9+
max_len = len(wordDict[0])
10+
for element in wordDict:
11+
part_len = len(element)
12+
word_dict[element] = None
13+
if min_len > part_len:
14+
min_len = part_len
15+
elif max_len < part_len:
16+
max_len = part_len
17+
18+
for i in range(len(s) - 1, -1, -1):
19+
for idx in range(min_len, max_len + 1):
20+
if i + idx > len(s):
21+
break
22+
if dp[i] == True:
23+
break
24+
25+
if s[i : i + idx] in word_dict:
26+
dp[i] = dp[i + idx]
27+
return dp[0]
28+
# Each element in word_dict range from min_len to max_len length
29+
30+
31+
wordDict = ["aaaa", "aaa"]
32+
s = "aaaaaaa"
33+
obj = Solution()
34+
print(obj.wordBreak(s, wordDict))
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution:
2+
def checkString(self, s):
3+
first_b = -1
4+
last_a = -1
5+
status = False
6+
for i in range(len(s)):
7+
if s[i] == "a":
8+
continue
9+
10+
first_b = i
11+
break
12+
for i in range(len(s) - 1, -1, -1):
13+
if s[i] == "b":
14+
continue
15+
last_a = i
16+
break
17+
# Base case : there is not b in the array
18+
if first_b == -1:
19+
return False
20+
# If last_a < first_b, then return True
21+
if last_a < first_b:
22+
return True
23+
else:
24+
return False
25+
26+
27+
obj = Solution()
28+
s = "bbb"
29+
print(obj.checkString(s))

0 commit comments

Comments
 (0)