Groovy 使用给定的数字查找偶数
我必须用给定数字的数字找到可能的最大偶数 输入:7876541Groovy 使用给定的数字查找偶数,groovy,soapui,Groovy,Soapui,我必须用给定数字的数字找到可能的最大偶数 输入:7876541 期望输出:8776514 谁能帮我解释一下逻辑吗?这个怎么样 将其转换为字符串 将数字按相反顺序排序 加入它们并将其转换为数字 def n=7876541 def newN=(n.toString().split(“”).findAll{it}.sort().reverse().join())作为整数 普林顿纽恩 你可以在网上快速试用 编辑:根据OP评论,更新答案 以下是您可以做的- -查找数字的排列 -找到偶数 -按最大值过
期望输出:8776514 谁能帮我解释一下逻辑吗?这个怎么样
- 将其转换为字符串
- 将数字按相反顺序排序
- 加入它们并将其转换为数字
def n=7876541
def newN=(n.toString().split(“”).findAll{it}.sort().reverse().join())作为整数
普林顿纽恩
你可以在网上快速试用
编辑:根据OP评论,更新答案
以下是您可以做的--查找数字的排列
-找到偶数
-按最大值过滤 已经找到了一个用于查找排列的方法,因此只需稍作修改即可重新使用它。归功于 当然,它可以通过Groovized简化
类置换{
静态定义列表=[]
公共静态void打印置换(char[]a,int startIndex,int endIndex){
if(startIndex==endIndex)
list不需要创建排列。
尝试以下解决方案:
- 将源编号转换为字符串
- 将字符串拆分为数组
- 暂时按升序对数字进行排序
- 查找第一个偶数数字的索引
- 从数组中删除此数字(将其存储在变量中)
- 反转数组并添加删除的数字
- 将数组中的数字合并,并将其转换为整数
因此,整个脚本如下所示:
def inp = 7876541
def chars1 = inp.toString().split('')
// findAll{it} drops an empty starting element from the split result
def chars2 = chars1.findAll{it}.sort()
// Find index of the 1st even digit
def n = chars2.findIndexOf{it.toInteger() % 2 == 0}
def dig = chars2[n] // Store this digit
chars2.remove(n) // Remove from the array
def chars3 = chars2.reverse() // Descending order
chars3.add(dig) // Add the temporarily deleted number
def out = (chars3.join()) as Integer // result
println out
请发布您现在拥有的代码。8776514
不正确,因为8776541
是最好的。@Rao,谢谢您的快速帮助,但在输出中我需要最大的帮助number@RitaR,请检查编辑部分。“$n”.chars.toList().permutations()*.join()*.toInteger().findAll{it%2==0}.max()
;-)少代码ftw!;-)@RitaR,如果您接受它为@Rao,我不会选择标记为已回答的:(