【发布时间】:2021-05-01 11:27:21
【问题描述】:
假设我有 2 个相同数字 A 和 B(两个数字不同),我需要找到 X(A 和 B 中的位数,并且位置相同)和 Y( A 和 B 中的数字,但位置不同)。 例如,如果 A = 4567 且 B = 4567,则 X 为 4,Y 为 0。如果 A = 3456 且 B = 4567,则 X 为 0,Y 为 3。不考虑效率,我的代码如下如下:
def compare(num1, num2):
x = 0
y = 0
for i in range(4):
if str(num1)[i] in str(num2) and str(num1)[i] == str(num2)[i]:
x += 1
elif str(num1)[i] in str(num2):
y += 1
return ('X = %d, Y = %d'%(x,y))
但是,我认为这不是解决此问题的最有效方法。谁能提供更有效的解决方案?谢谢...
【问题讨论】:
-
你的代码工作正常吗(除了你在这里没有正确格式化它,我假设它为你运行)?如果是这样,您担心效率是否有特殊原因促使您提出这个问题?您是否可以花时间解决其他/不同的问题?
-
这是一个分配问题,它给出了更高的分数以提高效率......
-
看起来像 compare("0110", "1111") != compare("1111", "0110")
-
对于这个问题,数字只有不同的数字
-
您知道如何衡量效率,以便决定哪种方法更好吗?效率只是速度,还是代码行数、可维护性、所需内存等其他指标?
标签: python algorithm for-loop memory-efficient