diff --git a/src/hashmap_set/determine_if_two_strings_are_close/__init__.py b/src/hashmap_set/determine_if_two_strings_are_close/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/hashmap_set/determine_if_two_strings_are_close/solution.py b/src/hashmap_set/determine_if_two_strings_are_close/solution.py new file mode 100644 index 0000000..d7633bc --- /dev/null +++ b/src/hashmap_set/determine_if_two_strings_are_close/solution.py @@ -0,0 +1,17 @@ +from collections import Counter + + +class Solution: + def closeStrings(self, word1: str, word2: str) -> bool: + word1_counter = Counter(word1) + word2_counter = Counter(word2) + + return ( + sorted(word1_counter.values()) == sorted(word2_counter.values()) + and word2_counter.keys() == word2_counter.keys() + ) + + +print(Solution().closeStrings(word1="abc", word2="bca")) +print(Solution().closeStrings(word1="a", word2="aa")) +print(Solution().closeStrings(word1="cabbba", word2="abbccc")) diff --git a/tests/test_determine_if_two_strings_are_close.py b/tests/test_determine_if_two_strings_are_close.py new file mode 100644 index 0000000..4cce3e6 --- /dev/null +++ b/tests/test_determine_if_two_strings_are_close.py @@ -0,0 +1,17 @@ +import pytest +from src.hashmap_set.determine_if_two_strings_are_close.solution import ( + Solution, +) + + +@pytest.mark.parametrize( + "word1, word2, expected", + [ + ("abc", "bca", True), + ("a", "aa", False), + ("cabbba", "abbccc", True), + ], +) +def test_close_strings(word1, word2, expected): + solution = Solution() + assert solution.closeStrings(word1, word2) == expected