为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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;
}

 

查看完整回答
反对 回复 2018-05-02
?
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]);
        }
    }
}


查看完整回答
反对 回复 2019-09-17
?
前端小蜘蛛

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长度比较就可以知道结果。

查看完整回答
反对 回复 2018-05-02
?
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 ? "" : "没") + "有相同的数字");
}


查看完整回答
反对 回复 2018-05-02
?
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)


查看完整回答
反对 回复 2018-05-02
  • 5 回答
  • 0 关注
  • 4566 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信