Improve Project Euler problem 070 solution 1 (#5166)

* Change has_same_digits doctest

* Improve has_same_digits function
This commit is contained in:
Maxim Smolskiy 2021-10-30 22:36:12 +03:00 committed by GitHub
parent e6cf13cc03
commit e7565f8bfc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -60,34 +60,16 @@ def has_same_digits(num1: int, num2: int) -> bool:
Return True if num1 and num2 have the same frequency of every digit, False
otherwise.
digits[] is a frequency table where the index represents the digit from
0-9, and the element stores the number of appearances. Increment the
respective index every time you see the digit in num1, and decrement if in
num2. At the end, if the numbers have the same digits, every index must
contain 0.
>>> has_same_digits(123456789, 987654321)
True
>>> has_same_digits(123, 12)
>>> has_same_digits(123, 23)
False
>>> has_same_digits(1234566, 123456)
False
"""
digits = [0] * 10
while num1 > 0 and num2 > 0:
digits[num1 % 10] += 1
digits[num2 % 10] -= 1
num1 //= 10
num2 //= 10
for digit in digits:
if digit != 0:
return False
return True
return sorted(str(num1)) == sorted(str(num2))
def solution(max: int = 10000000) -> int: