资讯专栏INFORMATION COLUMN

【7 kyu】Descending Order

ls0609 / 2333人阅读

摘要:若提供比较函数返回值返回值不变返回值交换位置升序排列后,再利用反序将字符串转换为可选参数,表示进制。规定使用,但是并不是所有的浏览器都遵循这个规定。因此,永远都要明确给出参数的值。若传入的字符串中含有非数字字符,将返回。

原题目

Your task is to make a function that can take any non-negative integer as a argument and return it with it"s digits in descending order. Essentially, rearrange the digits to create the highest possible number.

Examples:
Input: 21445 Output: 54421
Input: 145263 Output: 654321
Input: 1254859723 Output: 9875543221

题目:将一个正整数里的数字按照降序排列。

思路:

将数字转化为字符串

将字符串变成数组

将数组中的元素按照降序排列,然后拼接成字符串

将字符串转化为数字

My Solution:
function descendingOrder(n){
  var str = n.toString();
  str = str.split("").sort(function(x, y) {
    return y-x
  });
  return parseInt(str.join(""))
}
Clever Solution
function descendingOrder(n){
  return parseInt(String(n).split("").sort().reverse().join(""))
}
对比 1. 将数字转化为字符串

(1) .toString([radix]) 可以将除了 nullundefined的对象都转换为字符串

radix: 可选参数,表示进制

var a;

a.toString();
// Uncaught TypeError: Cannot read property "toString" of undefined

a = null;
a.toString();
// Uncaught TypeError: Cannot read property "toString" of null

a = 10;
a.toString(2);    // "1010"

a = {name: "Alice", age: "1"};
a.toString();    // "[object Object]"

(2) String() 可以将 nullundefined 转换为字符串,但是没法转进制字符串

var b;
String(b);    // "undefined"

b = null;
String(b);    // "null"

b = {name: "Alice", age: "1"};
String(b);    // "[object Object]"
2. 数组降序

(1) arrayObject.sort([sortby]) 传入比较函数sortby,直接降序排列

当参数 sortby 不存在时是按照字符编码的顺序进行排序。

若提供比较函数 function(x, y){ return 返回值; }

返回值 <= 0: x, y 不变

返回值 > 0: x, y 交换位置

(2) sort()升序排列后,再利用reverse()反序

3. 将字符串转换为Number

(1) parseInt(string, [radix])

radix:可选参数,表示进制。在不指定radix的情况下:

如果字符串 string 以"0x"或者"0X"开头, 则基数是16 (16进制).

如果字符串 string 以"0"开头, 基数是8(八进制)或者10(十进制),那么具体是哪个基数由实现环境决定。ECMAScript 5 规定使用10,但是并不是所有的浏览器都遵循这个规定。因此,永远都要明确给出radix参数的值。

如果字符串 string 以其它任何值开头,则基数是10 (十进制)。

如果第一个字符不能被转换成数字,parseInt返回NaN。

(2) Number(str): 若传入的字符串中含有非数字字符,将返回NaN

(3) + 运算符,强制类型转换

除此之外,将String转换为Number还可使用

(4) 运算符 -*/ 都可以进行强制类型转换

(5) ~~ 按位非运算符

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88782.html

相关文章

  • 7 kyu】Sum of two lowest positive integers

    摘要:原题目题目有一个不少于四个元素的数组,计算其中两个最小值的和。对比我写的方法比较常规,中采用了的解构赋值和箭头函数 原题目 Create a function that returns the sum of the two lowest positive numbers given an array of minimum 4 integers. No floats or empty ...

    fjcgreat 评论0 收藏0
  • [LintCode/LeetCode] Combination Sum I & II

    摘要:和唯一的不同是组合中不能存在重复的元素,因此,在递归时将初始位即可。 Combination Sum I Problem Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T...

    ThreeWords 评论0 收藏0
  • [LintCode/LeetCode] Subsets & Subsets II

    Subsets Problem Given a set of distinct integers, return all possible subsets. Notice Elements in a subset must be in non-descending order.The solution set must not contain duplicate subsets. Example ...

    tracy 评论0 收藏0
  • [Leetcode] Subset 子集

    摘要:深度优先搜索复杂度时间空间递归栈空间思路这道题可以转化为一个类似二叉树的深度优先搜索。另外需要先排序以满足题目要求。新的集合要一个新的,防止修改引用。 Subset I Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset must be in n...

    hzc 评论0 收藏0
  • 【5 kyu】Largest 5 digit number in a series

    摘要:原题目题目找出一个数值该数值将以字符串的形式传入中最大的五位数。如果数字的位数小于,则直接返回该数值如果数字的位数不小于六位,则依次截取连续的位数,求取最大值对比中使用了递归。 原题目 In the following 6 digit number:28391091 is the greatest sequence of 2 digits. In the following 10 di...

    impig33 评论0 收藏0

发表评论

0条评论

ls0609

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<