deemos
2018-05-02 11:08:55
如果我给出一个整数,是用一个算法来判断这个整数内有没有相同的数字。
就好比说
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
提交
取消