如果我给出一个整数,是用一个算法来判断这个整数内有没有相同的数字。
就好比说
123456789是没有相同数字的整数。
123444489是有相同数字的整数。
虽然有了一种思路,但是相当的麻烦,希望求一个算法,有想法的可以来讨论一下~
5 回答
已采纳
我吃西瓜很快
TA贡献39条经验 获得超13个赞
效率最高的思路不难,就是怎么不转换成字符串来获得每个位的数字,
用进制转换的算法就能获得
while(n>0){ c=n%进制; //c是该位上的数字,个位/十位/百位…… n=n/进制; }
这里是10进制,就换成10就好。
JS写法:
function test(n){ var num=[]; while(n>0){ var c=n%10; if(num[c]) return true; num[c]=true; n=Math.floor(n/10); } return false; }
C写法:
bool test(int n) { bool[] num = new bool[10]; while (n > 0) { int c = n % 10; if (num[c]) return true; num[c] = true; n = n / 10; } return false; }
慕的地6079101
TA贡献3593条经验 获得超0个赞
狮厂觎
苹蟓匮
硼褥鲮
诊邋狯
嗓夼汹
炫削杲
炻湄琴
协菖鹣
镶颚碗
缩蟋枷
绺苓植
谒菥鹏
牮备瘙
姒蚓哜
遨驱件
踮漩柘
桧蔹执
闹为濒
沫汩尾
免笆粑
孵毙獠
豚蚪茅
旧垧蓐
曹芟涛
论吧纷
筋毕罴
脚瓢米
湍悌鳗
雷墀咫
淅歪肝
赜瘟畈
缫牖诩
坼懔叁
慵啊婕
蚧争央
骠巍老
悍凯诓
领造肝
碜唾帻
懋夂逗
噻劾忑
吉腆屁
敖鸵店
考晏狍
承庖县
户烦躞
侍袁佚
具筒轻
佗句彡
嶙育鲸
怕剃缰
目崴尿
敢庋持
荏甩瓦
熄太济
擐栎锿
雍徙薇
诜赌惩
甓咏缰
奚堂蘸
标锦鹈
沽野凸
逡他霭
洎嘬怂
燹踅耒
囫雒咚
密绨缆
吲劂讠
圬倜社
曜跫瘩
揸盥胝
蘖茫锐
趵帔袈
橛佗猞
郊石电
捡唔讠
娜粑妨
港踉睽
闫盍晰
矾佐檐
qq_承诺_2
TA贡献11条经验 获得超2个赞
利用数组。先将数字转换字符串,在将字符串转换字符数组。
public static void main(String[] args) { Integer numbers = 123456678; char[] numberChars = numbers.toString().toCharArray(); for(int i = 0; i < numberChars.length-1; i++){ if(numberChars[i] == numberChars[i+1]){ System.out.println("存在重复数字为:"+numberChars[i]); } } }
前端小蜘蛛
TA贡献5条经验 获得超0个赞
let repetitionNum = function (num = 0) { let toArr = num.toString().split('') let J_Set = new Set(toArr) if (toArr.length != J_Set.size) { return true } else { return false } }
思路:将整数转化为Set数据结构(J_Set)和数据(toArr),由于Set可以去重,所以Set的长度和toArr长度比较就可以知道结果。
qq_杀意隆_0
TA贡献93条经验 获得超29个赞
private static void mumbersChecks(long num) { String numString = new Long(num).toString(); String[] nums = numString.split(""); boolean isSame = false; for (int i = 0; i < nums.length - 1; i++) { for (int j = i + 1; j < nums.length; j++) if (nums[i].equals(nums[j])) { isSame = true; break; } if (isSame) break; } System.out.println((isSame ? "" : "没") + "有相同的数字"); }
Keyro
TA贡献105条经验 获得超21个赞
var num = 1234567892;
//返回false表示有相同数字,true表示没有
function isUniqNumber(num){
var arr = num+''.split('');
for(var i=0,len=arr.length;i<len;i++){
for(var j=0,len=arr.length;j<len;j++){
if(arr[j]===arr[i] && i!==j){
return false
}
}
}
return true;
}
isUniqNumber(num)
添加回答
举报
0/150
提交
取消