Python 问题解决-编码面试问题

Python 问题解决-编码面试问题,python,algorithm,Python,Algorithm,异或问题 给你两个不带前导零的正整数X和Y。您可以对这些整数执行任意次数的运算,其中可以删除给定数字的一个数字,从而使生成的数字没有前导零。设X′和Y′是分别对X和Y执行运算后形成的两个数 你必须找到X′和Y′的所有唯一对,它们的XOR为零 注:两对数字(A,B)和(C,D)被认为是不同的当且仅当A=C或B=D 输入格式 第一行:表示测试用例数量的整数T 接下来的每一个T行:两个空格分隔的整数X和Y 输出格式 对于每个测试用例,在新行中打印答案。 约束条件 一,≤ T≤ 101≤ X,Y≤ 10

异或问题

给你两个不带前导零的正整数X和Y。您可以对这些整数执行任意次数的运算,其中可以删除给定数字的一个数字,从而使生成的数字没有前导零。设X′和Y′是分别对X和Y执行运算后形成的两个数

你必须找到X′和Y′的所有唯一对,它们的XOR为零

注:两对数字(A,B)和(C,D)被认为是不同的当且仅当A=C或B=D

输入格式

第一行:表示测试用例数量的整数T 接下来的每一个T行:两个空格分隔的整数X和Y 输出格式

对于每个测试用例,在新行中打印答案。 约束条件

一,≤ T≤ 101≤ X,Y≤ 1012

样本输入1 212 10213 33 样本输出1 三十一

对于测试用例1

X'的可能值为[1,2,12] Y'的可能值为[1,2,10,12102] 所以,三对(1,1),(2,2),(12,12)有异或零

对于测试用例2

X'的可能值为[1,3,13] Y'的可能值为[3,33](我们可以生成两次3) 因此,一个唯一对(3,3)具有xor零

def XOR_问题(X,Y):
#做点什么
不退货#退货
T=输入()
对于x范围(T)内的uu):
十、 Y=映射(int,原始输入().split())
输出=异或问题(X,Y)
打印出来_
我不知道如何解决这个问题,把它作为一个面试问题,我有20分钟的时间来解决这个问题。(这个问题是几个月前提出来的)

你写道“你必须找到所有异或为零的X′和Y′的唯一对。”。如果我理解正确,这只有在X'=Y'时才成立,对吗

但是你说“注意:两对数字(A,B)和(C,D)被认为是不同的,当且仅当A!=C或B!=D。”。但既然A=B和C=D一定是这种情况,那么这里就没有歧义了。。。所以我对这一评论感到困惑

我对你的例子也有点困惑:你说对于X=212,“X'的可能值是[1,2,12]”。。。但是21也可以(删除最后2个)吗

但是,假设我正确地理解了这个问题,您可以将X和Y视为字符串(长度分别最多为3和4),并希望从这两个字符串中找到哪些非连续子字符串(即通过删除字符获得的字符串)

因为公共子字符串的长度最多为3(并且至少为1),所以用蛮力的方式似乎很容易做到这一点。我的意思是,从X最多可以产生2^3-1=7个非空字符串,从Y最多可以产生2^4-2=14个长度小于4的非空字符串。您可以生成这两个列表,对它们进行排序,然后查找公共元素


如果它们的长度更大,我会对此进行进一步优化,但我认为这对于第一次通过来说是好的。

给定X=212,我希望X'=[1,2,12,21,22,212]。一般来说,问题的表示需要大量的工作。你把XOR称为什么?123和222的异或是什么?