mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-10-31 11:05:36 +00:00
Update 45. 把数组排成最小的数.md
补充自定义字符串排序规则的具体拼接示例,并补充比较规则等价于无限小数比较及满足传递性的原理解释。
This commit is contained in:
@@ -10,7 +10,9 @@
|
||||
|
||||
## 解题思路
|
||||
|
||||
可以看成是一个排序问题,在比较两个字符串 S1 和 S2 的大小时,应该比较的是 S1+S2 和 S2+S1 的大小,如果 S1+S2 \< S2+S1,那么应该把 S1 排在前面,否则应该把 S2 排在前面。
|
||||
可以看成是一个排序问题,在比较两个字符串 S1 和 S2 的大小时,应该比较的是 S1+S2 和 S2+S1 的大小,如果 S1+S2 \< S2+S1,那么应该把 S1 排在前面,否则应该把 S2 排在前面。例如 3 和 32 拼接得到 332 和 323,323 更小,所以 32 排在 3 前面。
|
||||
|
||||
这个比较规则可以直接用于排序,是因为它等价于比较每个数字无限重复后得到的小数,例如 3 对应 0.333…,32 对应 0.3232…,后者更小。实数的大小关系有传递性,所以不会出现 a 在 b 前、b 在 c 前、c 又在 a 前的矛盾。
|
||||
|
||||
```java
|
||||
public String crackPassword(int[] password) {
|
||||
|
||||
Reference in New Issue
Block a user