Skip to content

Commit b1246c4

Browse files
solves interleaving strings in java
1 parent bf241b0 commit b1246c4

File tree

2 files changed

+32
-11
lines changed

2 files changed

+32
-11
lines changed

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
| 94 | [Binary Tree Inorder Traversal](https://leetcode.com/problems/binary-tree-inorder-traversal) | [![Java](assets/java.png)](src/BinaryTreeInorderTraversal.java) [![Python](assets/python.png)](python/binary_tree_inorder_traversal.py) | |
9090
| 95 | [Unique Binary Search Trees II](https://leetcode.com/problems/unique-binary-search-trees-ii) | [![Java](assets/java.png)](src/UniqueBinarySearchTreesII.java) | |
9191
| 96 | [Unique Binary Search Trees](https://leetcode.com/problems/unique-binary-search-trees) | [![Java](assets/java.png)](src/UniqueBinarySearchTrees.java) | |
92-
| 97 | [Interleaving String](https://leetcode.com/problems/interleaving-string) | | |
92+
| 97 | [Interleaving String](https://leetcode.com/problems/interleaving-string) | [![Java](assets/java.png)](src/InterleavingString.java) | |
9393
| 98 | [Validate Binary Search Tree](https://leetcode.com/problems/validate-binary-search-tree) | [![Java](assets/java.png)](src/ValidateBinarySearchTree.java) | |
9494
| 99 | [Recover Binary Search Tree](https://leetcode.com/problems/recover-binary-search-tree) | | |
9595
| 100 | [Same Tree](https://leetcode.com/problems/same-tree) | [![Java](assets/java.png)](src/SameTree.java) [![Python](assets/python.png)](python/same_tree.py) | |
@@ -281,6 +281,8 @@
281281
| 349 | [Intersection of 2 Arrays](https://leetcode.com/problems/intersection-of-two-arrays) | [![Java](assets/java.png)](src/IntersectionOfTwoArrays.java) [![Python](assets/python.png)](python/intersection_of_2_array.py) | |
282282
| 350 | [Intersection of 2 Arrays II](https://leetcode.com/problems/intersection-of-two-arrays-ii) | [![Java](assets/java.png)](src/IntersectionOfTwoArraysII.java) [![Python](assets/python.png)](python/intersection_of_2_arrays_II.py) | |
283283
| 351 | 🔒 [Android Unlock Patterns](https://leetcode.com/problems/android-unlock-patterns) | | |
284+
| 355 | [Design Twitter](https://leetcode.com/problems/design-twitter) | | |
285+
| 357 | [Count Numbers with Unique Digits](https://leetcode.com/problems/count-numbers-with-unique-digits) | | |
284286
| 359 | 🔒 [Logger Rate Limiter](https://leetcode.com/problems/logger-rate-limiter) | | |
285287
| 367 | [Valid Perfect Square](https://leetcode.com/problems/valid-perfect-square) | [![Java](assets/java.png)](src/IsPerfectSquare.java) [![Python](assets/python.png)](python/valid_perfect_square.py) | |
286288
| 374 | [Guess Number Higher or Lower](https://leetcode.com/problems/guess-number-higher-or-lower) | [![Java](assets/java.png)](src/GuessNumberHigherOrLower.java) [![Python](assets/python.png)](python/guess_number_higher_or_lower.py) | |

src/InterleavingString.java

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,34 @@
1-
public class InterleavingString {
2-
public static void main(String[] args) {
3-
System.out.println(isInterleave("aabcc", "dbbca", "aadbbcbcac"));
4-
}
1+
// https://leetcode.com/problems/interleaving-string
2+
// T: O(n * m)
3+
// S: O(min(m, n))
54

6-
public static boolean isInterleave(String s1, String s2, String s3) {
5+
public class InterleavingString {
6+
public boolean isInterleave(String s1, String s2, String s3) {
77
if (s1.length() + s2.length() != s3.length()) return false;
8-
for (int i = 0, j = 0, t = 0 ; i <= s1.length() && j <= s2.length() && t < s3.length() ; t++) {
9-
if (i < s1.length() && s3.charAt(t) == s1.charAt(i)) i++;
10-
else if (j < s2.length() && s3.charAt(t) == s2.charAt(j)) j++;
11-
else return false;
8+
if (s1.length() < s2.length()) {
9+
String temp = s1;
10+
s1 = s2;
11+
s2 = temp;
1212
}
13-
return true;
13+
14+
final int rows = s1.length() + 1, columns = s2.length() + 1;
15+
final boolean[] dp = new boolean[columns];
16+
17+
for (int row = 0 ; row < rows ; row++) {
18+
for (int column = 0 ; column < columns ; column++) {
19+
if (row == 0 && column == 0) {
20+
dp[column] = true;
21+
} else if (row == 0) {
22+
dp[column] = dp[column - 1] && s2.charAt(column - 1) == s3.charAt(row + column - 1);
23+
} else if (column == 0) {
24+
dp[column] = dp[column] && s1.charAt(row - 1) == s3.charAt(row + column - 1);
25+
} else {
26+
dp[column] = (s1.charAt(row - 1) == s3.charAt(row + column - 1) && dp[column])
27+
|| (s2.charAt(column - 1) == s3.charAt(row + column - 1) && dp[column - 1]);
28+
}
29+
}
30+
}
31+
32+
return dp[columns - 1];
1433
}
1534
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy