From b4bf8f1dfab5819a6342bdad30266f2ad4e196aa Mon Sep 17 00:00:00 2001 From: Peter Chen Date: Thu, 18 Sep 2025 08:48:51 +0800 Subject: [PATCH] Add solution for the "Check If Two String Arrays are Equivalent" problem with unit tests. --- ...eckIfTwoStringArraysAreEquivalent1662.java | 20 -------- ...eckIfTwoStringArraysAreEquivalent1662.java | 13 ++++++ ...fTwoStringArraysAreEquivalent1662Test.java | 46 +++++++++++++++++++ 3 files changed, 59 insertions(+), 20 deletions(-) delete mode 100644 src/CheckIfTwoStringArraysAreEquivalent1662.java create mode 100644 src/main/java/com/leetcode/easy/CheckIfTwoStringArraysAreEquivalent1662.java create mode 100644 src/test/java/com/leetcode/easy/CheckIfTwoStringArraysAreEquivalent1662Test.java diff --git a/src/CheckIfTwoStringArraysAreEquivalent1662.java b/src/CheckIfTwoStringArraysAreEquivalent1662.java deleted file mode 100644 index d623a6b..0000000 --- a/src/CheckIfTwoStringArraysAreEquivalent1662.java +++ /dev/null @@ -1,20 +0,0 @@ -public class CheckIfTwoStringArraysAreEquivalent1662 { - public boolean arrayStringsAreEqual(String[] word1, String[] word2) { - String string1 = ""; - for (String word : word1) { - string1 = string1.concat(word); - } - String string2 = ""; - for (String word : word2) { - string2 = string2.concat(word); - } - return string1.equals(string2); - } - - public static void main(String[] args) { - String[] word1 = new String[]{"ab", "c"}; - String[] word2 = new String[]{"a", "bc"}; - // true - System.out.println(new CheckIfTwoStringArraysAreEquivalent1662().arrayStringsAreEqual(word1, word2)); - } -} diff --git a/src/main/java/com/leetcode/easy/CheckIfTwoStringArraysAreEquivalent1662.java b/src/main/java/com/leetcode/easy/CheckIfTwoStringArraysAreEquivalent1662.java new file mode 100644 index 0000000..891b2c4 --- /dev/null +++ b/src/main/java/com/leetcode/easy/CheckIfTwoStringArraysAreEquivalent1662.java @@ -0,0 +1,13 @@ +// Tags: Array, String +package com.leetcode.easy; + +public class CheckIfTwoStringArraysAreEquivalent1662 { + /* + Let N be the maximum of the number of all characters in word1 and the number of all characters in word2. + Time complexity: O(N), since we need to iterate over all characters in word1 and word2 to build the new strings. + Space complexity: O(N), since we need extra O(N) space to store the new built strings. + */ + public boolean arrayStringsAreEqual(String[] word1, String[] word2) { + return String.join("", word1).equals(String.join("", word2)); + } +} diff --git a/src/test/java/com/leetcode/easy/CheckIfTwoStringArraysAreEquivalent1662Test.java b/src/test/java/com/leetcode/easy/CheckIfTwoStringArraysAreEquivalent1662Test.java new file mode 100644 index 0000000..6bd11ea --- /dev/null +++ b/src/test/java/com/leetcode/easy/CheckIfTwoStringArraysAreEquivalent1662Test.java @@ -0,0 +1,46 @@ +package com.leetcode.easy; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class CheckIfTwoStringArraysAreEquivalent1662Test { + private CheckIfTwoStringArraysAreEquivalent1662 solution; + + @BeforeEach + void setUp() { + solution = new CheckIfTwoStringArraysAreEquivalent1662(); + } + + @Test + void testArrayStringsAreEqual_Example1() { + String[] word1 = {"ab", "c"}; + String[] word2 = {"a", "bc"}; + + boolean result = solution.arrayStringsAreEqual(word1, word2); + + assertTrue(result); + } + + @Test + void testArrayStringsAreEqual_Example2() { + String[] word1 = {"a", "cb"}; + String[] word2 = {"ab", "c"}; + + boolean result = solution.arrayStringsAreEqual(word1, word2); + + assertFalse(result); + } + + @Test + void testArrayStringsAreEqual_Example3() { + String[] word1 = {"abc", "d", "defg"}; + String[] word2 = {"abcddefg"}; + + boolean result = solution.arrayStringsAreEqual(word1, word2); + + assertTrue(result); + } +}