一道面试题(转)

本文介绍了一个使用Java编写的算法,该算法能够生成特定数字集合的所有有效排列,同时遵循4不可位于第三位及3与5不可相邻的规则。通过遍历可能的数字组合并应用验证逻辑来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package str; public class ArrangeNumber { /** * :用1、2、2、3、4、5这六个数字,用java写一个main函数, 打印出所有不同的排列,如:512234、412345等, * 要求:"4"不能在第三位,"3"与"5"不能相连. */ public static void main(String[] a) { long start; System.out.println("结果是:"); int count = 0; for (start = 122345; start <= 543221; start++) { String s = String.valueOf(start); if (Validate(s)) { if ((s.indexOf("35") == -1) && (s.indexOf("53") == -1) // 如果没要找到字符返回-1 && (s.charAt(2) != '4')) { System.out.println(s); count++; } } } System.out.println("最后结果共" + count); } public static boolean Validate(String l) { // 保证数字只出现这几个数字 int[] a = new int[] { 0, 0, 0, 0, 0 }; for (int i = 0; i < 6; i++) { if (l.charAt(i) == '1') a[0]++; if (l.charAt(i) == '2') a[1]++; if (l.charAt(i) == '3') a[2]++; if (l.charAt(i) == '4') a[3]++; if (l.charAt(i) == '5') a[4]++; } // 如果1出现1次,2出现2次,3,4,5各出现一次,返回true, if (a[0] == 1 && a[1] == 2 && a[2] == 1 && a[3] == 1 && a[4] == 1) return true; else return false; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值