function
PriorityQueue () {
var
collection = [];
this
.printCollection =
function
() {
(console.log(collection));
};
this
.enqueue =
function
(element){
if
(
this
.isEmpty()){
collection.push(element);
}
else
{
var
added =
false
;
for
(
var
i=0; i<collection.length; i++){
if
(element[1] < collection[i][1]){
collection.splice(i,0,element);
added =
true
;
break
;
}
}
if
(!added){
collection.push(element);
}
}
};
this
.dequeue =
function
() {
var
value = collection.shift();
return
value[0];
};
this
.front =
function
() {
return
collection[0];
};
this
.size =
function
() {
return
collection.length;
};
this
.isEmpty =
function
() {
return
(collection.length === 0);
};
}
function
largestInteger( num)
{
let Even =
new
PriorityQueue();
let Odd =
new
PriorityQueue();
let C = 0;
let t = num;
while
(t) {
C++;
t /= 10;
}
let flag = C & 1 ?
true
:
false
;
while
(num) {
if
(flag)
Even.enqueue(num % 10);
else
Odd.enqueue(num % 10);
flag = !flag;
num /= 10;
}
let ans = 0;
while
(Even.size()>0 && Odd.size()>0 ) {
ans = (ans * 10 + Even.front());
Even.dequeue();
ans = (ans * 10 + Odd.front());
Odd.dequeue();
}
if
(C & 1)
ans = ans * 10 + Even.front();
return
ans;
}
let N = 738946;
console.log(largestInteger(N));
</script>