如何实现校验第二个数数字重排后可组成第一个数的函数
数字重排校验函数实现
我们要实现的函数用于校验第二个数字的各位数字重排后是否可以组成第一个数字,合法输入取值范围为10 到 10亿。
实现思路
- 先做输入合法性校验,不符合范围直接抛出异常
- 若两个数字的位数不相等,直接返回
false,位数不同不可能通过重排得到对方 - 将两个数字转为字符串后排序,排序结果完全一致则说明可以通过重排得到,返回
true,否则返回false
代码示例(Python)
def check_permutation(x: int, y: int) -> bool: # 校验输入范围 if not (10 <= x <= 10**9 and 10 <= y <= 10**9): raise ValueError("输入数字需在10到10亿范围内") str_x = str(x) str_y = str(y) # 位数不同直接返回False if len(str_x) != len(str_y): return False # 排序后对比是否一致 return sorted(str_x) == sorted(str_y)
测试用例验证
- 测试用例1:
x = 544 y = 454
输出:true(y的数字重排后可组成x)
- 测试用例2:
x = 11235 y = 23465
输出:false(y的数字重排后不可组成x)
内容的提问来源于stack exchange,提问作者mehra_neeraj
相关产品推荐
相关产品推荐

