diff options
author | Jack Sangdahl <[email protected]> | 2025-03-01 12:53:59 -0700 |
---|---|---|
committer | Jack Sangdahl <[email protected]> | 2025-03-01 12:53:59 -0700 |
commit | d244407ce1f87bc1bd01cd3199cc179433582e70 (patch) | |
tree | ced8d7f6f619d0a27c5e979d0a7aca1aaafe5d72 /count_equal_pairs1.py | |
parent | bf357e5cbc5730591b60379006396ea613ba4987 (diff) | |
download | leetcode-d244407ce1f87bc1bd01cd3199cc179433582e70.tar.gz leetcode-d244407ce1f87bc1bd01cd3199cc179433582e70.zip |
3265. count almost equal pairs 1
Diffstat (limited to 'count_equal_pairs1.py')
-rw-r--r-- | count_equal_pairs1.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/count_equal_pairs1.py b/count_equal_pairs1.py new file mode 100644 index 0000000..177b3ce --- /dev/null +++ b/count_equal_pairs1.py @@ -0,0 +1,41 @@ +# 3265. Count Almost Equal Pairs I + +""" +you are given an array 'nums' consisting of positive integers. we call two +integers 'x' and 'y' in this problem almost equal if both integers can become +equal after performing the following operation at most once: choose either +'x' or 'y' and swap any two digits within the chosen number. return the +number of indices 'i' and 'j' in 'nums' where 'i < j' such that 'nums[i]' and +'nums[j]' are almost equal. note that it is allowed for an integer to have +leading zeros after performing an operation. +""" + + +class Solution(object): + def countPairs(self, nums): + """ + :type nums: List[int] + :rtype: int + """ + pow10 = [1000000, 100000, 10000, 1000, 100, 10, 1] + table, ans = {}, 0 + for swapped in nums: + cnt = table.get(swapped, 0) + table[swapped] = cnt + 1 + ans += cnt + for j in range(6): + for k in range(j + 1, 7): + n = int(swapped / pow10[j] % 10) + m = int(swapped / pow10[k] % 10) + if n != m: + swapped += (m - n) * pow10[j] + (n - m) * pow10[k] + ans += table.get(swapped, 0) + swapped += (m - n) * pow10[k] + (n - m) * pow10[j] + return ans + + +if __name__ == "__main__": + obj = Solution() + print(obj.countPairs(nums=[3, 12, 30, 17, 21])) + print(obj.countPairs(nums=[1, 1, 1, 1, 1])) + print(obj.countPairs(nums=[123, 231])) |