判断一个整数内有没有相同的数字。

如果我给出一个整数,是用一个算法来判断这个整数内有没有相同的数字。
就好比说
123456789是没有相同数字的整数。
123444489是有相同数字的整数。

虽然有了一种思路,但是相当的麻烦,希望求一个算法,有想法的可以来讨论一下~

deemos
浏览 4407回答 5
5回答

我吃西瓜很快

效率最高的思路不难,就是怎么不转换成字符串来获得每个位的数字,用进制转换的算法就能获得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

狮厂觎 苹蟓匮 硼褥鲮 诊邋狯 嗓夼汹 炫削杲 炻湄琴 协菖鹣 镶颚碗 缩蟋枷 绺苓植 谒菥鹏 牮备瘙 姒蚓哜 遨驱件 踮漩柘 桧蔹执 闹为濒 沫汩尾 免笆粑 孵毙獠 豚蚪茅 旧垧蓐 曹芟涛 论吧纷 筋毕罴 脚瓢米 湍悌鳗 雷墀咫 淅歪肝 赜瘟畈 缫牖诩 坼懔叁 慵啊婕 蚧争央 骠巍老 悍凯诓 领造肝 碜唾帻 懋夂逗 噻劾忑 吉腆屁 敖鸵店 考晏狍 承庖县 户烦躞 侍袁佚 具筒轻 佗句彡 嶙育鲸 怕剃缰 目崴尿 敢庋持 荏甩瓦 熄太济 擐栎锿 雍徙薇 诜赌惩 甓咏缰 奚堂蘸 标锦鹈 沽野凸 逡他霭 洎嘬怂 燹踅耒 囫雒咚 密绨缆 吲劂讠 圬倜社 曜跫瘩 揸盥胝 蘖茫锐 趵帔袈 橛佗猞 郊石电 捡唔讠 娜粑妨 港踉睽 闫盍晰 矾佐檐

qq_承诺_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]);         }     } }

前端小蜘蛛

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

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

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)
打开App,查看更多内容
随时随地看视频慕课网APP