国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js求數組中所有數字可以拼接出的最大整數

hss01248 / 518人閱讀

摘要:最近碰到一個問題,就是用求數組中所有數字能拼接出的最大整數,數組的每一項為多帶帶的拼接項,不能再拆開,例如中和分別為要被拼接的數字,而不是說還能繼續拆分為和。具體需求為,將拼接為。

最近碰到一個問題,就是用javascript求數組中所有數字能拼接出的最大整數,數組的每一項為多帶帶的拼接項,不能再拆開,例如[2,34]中2和34分別為要被拼接的數字,而不是說34還能繼續拆分為3和4。
具體需求為,將[7,321,35,4]拼接為7435321。
我設計的算法如下:

function insertSort(arr) {
    let res = [arr[0]];
    for (let i = 1, len = arr.length; i < len; i++) {
        let temp = arr[i];
        for (let j = i - 1; j >= 0; j--) {
            if (!compareNum(res[j],temp)) {
                res[j + 1] = res[j];
                res[j] = temp;
            } else {
                res[j + 1] = temp;
                break;
            }
        }
    }
    return res;
}
function compareNum(a,b) {
    a =""+a;
    b = ""+b;
    let aLen=a.length;
    let bLen=b.length;
    let aIndex=0;
    let bIndex=0;

    while (aIndexb[bIndex]){
        return true;
    }else{
        return false;
    }
}
let arr=[5,2,1,38];
// let arr=[5,2,1,38,52,4,5,593,8,55,555,492,493,7,9,61,66,6];
// let arr=[5,2,1,38,52,4,5,593,61,6];

function toInt(arr) {
    let newArr=insertSort(arr);
    document.write(newArr);
    return newArr.join("");
}

let intNum=toInt(arr);
console.log(intNum);

上面算法用的是自己封裝的insertSort插入排序。
數組自身有sort方法,如果借用Array.prototype.sort方法,代碼就會簡化很多。代碼如下:

var arr = [5,552,5,542,522,525,523,597,550,555,50,52];
function toInt(arr) {
    let newArr=arr.sort((a,b)=>{
        a =""+a;
        b = ""+b;
        let aLen=a.length;
        let bLen=b.length;
        let aIndex=0;
        let bIndex=0;

        while (aIndexb[bIndex]){
            return -1;
        }else{
            return 1;
        }
    });
    console.log(newArr);
    return newArr.join("");
}

let intNum=toInt(arr);
console.log(intNum);

現在整體講下上面算法的思路:

將數組中所有數字轉為字符串,按照首字母大小進行整體排序。

如果首字母相同,就通過while循環向后比較,比如52和53比較時,首字母5相同就比較2和3,如果相比較的兩個字符串長度不一樣,先被循環完的字符串將始終用最后一位字母進行后續比較,比如523和52進行比較時,前兩位相同,523的3就和52中的最后一位2就行比較,以此類推。

算法的整體思路是就是盡可能的保證高位數字比較大,難點在于處理首字母相同的字符串。感興趣的小伙伴,如果有更好的思路或疑問,可以在下面評論中提出來。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/84872.html

相關文章

  • 復習js 2

    摘要:復習表達式和運算符運算符擁有如下類型的運算符。例如十進制數字用二進制表示為,位運算符就是在這個二進制表示上執行運算,但是返回結果是標準的數值。因此,用于布爾值時,當任何一個操作數為則返回如果操作數都是則返回。 復習js day2 表達式和運算符 運算符 JavaScript 擁有如下類型的運算符。本節描述了運算符和運算符的優先級。 賦值運算符(Assignment operators...

    yhaolpz 評論0 收藏0
  • web前端教程《每日一題》(1-99)完結

    摘要:輸出在中,值表示一個空對象指針,而這正是使用操作符檢測值時會返回的原因。屬性規定必需在提交之前填寫輸入字段。通過字面量方式創建的數組對象是屬于類的一個實例,所以返回,故彈出。第期年月日代碼運行的結果輸出前端教程。 第1期(2016年4月6日): (1)js中關閉當前窗口的方法是:window.close(); 第2期(2016年4月7日): (1)js中使字符串中的字符變為小寫的方法是...

    golden_hamster 評論0 收藏0
  • web前端教程《每日一題》(1-99)完結

    摘要:輸出在中,值表示一個空對象指針,而這正是使用操作符檢測值時會返回的原因。屬性規定必需在提交之前填寫輸入字段。通過字面量方式創建的數組對象是屬于類的一個實例,所以返回,故彈出。第期年月日代碼運行的結果輸出前端教程。 第1期(2016年4月6日): (1)js中關閉當前窗口的方法是:window.close(); 第2期(2016年4月7日): (1)js中使字符串中的字符變為小寫的方法是...

    forsigner 評論0 收藏0
  • web前端教程《每日一題》(1-99)完結

    摘要:輸出在中,值表示一個空對象指針,而這正是使用操作符檢測值時會返回的原因。屬性規定必需在提交之前填寫輸入字段。通過字面量方式創建的數組對象是屬于類的一個實例,所以返回,故彈出。第期年月日代碼運行的結果輸出前端教程。 第1期(2016年4月6日): (1)js中關閉當前窗口的方法是:window.close(); 第2期(2016年4月7日): (1)js中使字符串中的字符變為小寫的方法是...

    fox_soyoung 評論0 收藏0

發表評論

0條評論

hss01248

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<