aboutsummaryrefslogtreecommitdiff
path: root/challenge-194/vamsi-meenavilli/python/ch-2.py
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-194/vamsi-meenavilli/python/ch-2.py')
-rw-r--r--challenge-194/vamsi-meenavilli/python/ch-2.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/challenge-194/vamsi-meenavilli/python/ch-2.py b/challenge-194/vamsi-meenavilli/python/ch-2.py
new file mode 100644
index 0000000000..d318dc3e51
--- /dev/null
+++ b/challenge-194/vamsi-meenavilli/python/ch-2.py
@@ -0,0 +1,41 @@
+import re
+import unittest
+
+"""
+ Week 194:
+
+ https://theweeklychallenge.org/blog/perl-weekly-challenge-194
+
+ Task 2: Frequency Equalizer
+ Submitted by: Mohammad S Anwar
+ You are given a string made of alphabetic characters only, a-z.
+
+ Write a script to determine whether removing only one character can make the frequency of the remaining characters the same.
+"""
+
+
+class FrequencyEqualizer:
+ @staticmethod
+ def frequency_equalizer(string: str) -> bool:
+ character_frequency_map = dict()
+
+ for character in string:
+ if character in character_frequency_map:
+ character_frequency_map[character] += 1
+ else:
+ character_frequency_map[character] = 1
+
+ unique_frequencies = list(set(character_frequency_map.values()))
+
+ return True if len(unique_frequencies) == 2 and abs(unique_frequencies[0] - unique_frequencies[1]) == 1 else False
+
+
+class FrequencyEqualizerTestCases(unittest.TestCase):
+ def test_digital_clock(self):
+ self.assertTrue(FrequencyEqualizer.frequency_equalizer("abbc"), 'Test case 1 Failed.')
+ self.assertTrue(FrequencyEqualizer.frequency_equalizer("xyzyyxz"), 'Test case 2 Failed.')
+ self.assertFalse(FrequencyEqualizer.frequency_equalizer("xzxz"), 'Test case 3 Failed.')
+
+
+if __name__ == '__main__':
+ unittest.main()