整数反转 #
题目 #
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
```
输入: 123
输出: 321
```
示例 2:
```
输入: -123
输出: -321
```
示例 3:
```
输入: 120
输出: 21
```
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为
\([-2^31, 2^31-1]。\)
请根据这个假设,如果反转后整数溢出那么就返回 0。
Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
```
Input: 123
Output: 321
```
Example 2:
```
Input: -123
Output: -321
```
Example 3:
```
Input: 120
Output: 21
```
Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range:
\([-2^31, 2^31-1].\)
For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
分析 #
题解 #
---
```c
```
---
```c++
```
---
```c#
```
---
```go
```
---
```java
```
---
```javascript
```
---
```kotlin
```
---
```php
```
---
```python
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
# 符合
s = cmp(x, 0)
r = int(str(s * x)[::-1])
return s * r * (r < 2**31)
```
---
`python3` 没有 `cmp` 函数,
使用 `(a > b) - (a < b)` 替代
参考:
- [stackoverflow](https://stackoverflow.com/questions/22490366/how-to-use-cmp-in-python-3)
```python
class Solution:
def reverse(self, x: int) -> int:
s = (lambda a, b: (a > b) - (a < b))(x, 0)
r = int(str(s * x)[::-1])
return s * r * (r < 2**31)
```
---
```ruby
```
---
```rust
```
---
```scala
```
---
```swift
```
---
```typescript
```
---
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。