Skip to content

Commit 760b319

Browse files
committed
feat: add solutions to lc problem: No.0405.Convert a Number to Hexadecimal
1 parent bf431b2 commit 760b319

File tree

5 files changed

+235
-4
lines changed

5 files changed

+235
-4
lines changed

Diff for: solution/0400-0499/0405.Convert a Number to Hexadecimal/README.md

+95-2
Original file line numberDiff line numberDiff line change
@@ -37,27 +37,120 @@
3737
"ffffffff"
3838
</pre>
3939

40-
4140
## 解法
4241

4342
<!-- 这里可写通用的实现逻辑 -->
4443

44+
将数字的二进制位每 4 个一组转换为 16 进制即可。
45+
4546
<!-- tabs:start -->
4647

4748
### **Python3**
4849

4950
<!-- 这里可写当前语言的特殊实现逻辑 -->
5051

5152
```python
52-
53+
class Solution:
54+
def toHex(self, num: int) -> str:
55+
if num == 0:
56+
return '0'
57+
chars = '0123456789abcdef'
58+
s = []
59+
for i in range(7, -1, -1):
60+
x = (num >> (4 * i)) & 0xf
61+
if s or x != 0:
62+
s.append(chars[x])
63+
return ''.join(s)
5364
```
5465

5566
### **Java**
5667

5768
<!-- 这里可写当前语言的特殊实现逻辑 -->
5869

5970
```java
71+
class Solution {
72+
public String toHex(int num) {
73+
if (num == 0) {
74+
return "0";
75+
}
76+
StringBuilder sb = new StringBuilder();
77+
while (num != 0) {
78+
int x = num & 15;
79+
if (x < 10) {
80+
sb.append(x);
81+
} else {
82+
sb.append((char) (x - 10 + 'a'));
83+
}
84+
num >>>= 4;
85+
}
86+
return sb.reverse().toString();
87+
}
88+
}
89+
```
90+
91+
```java
92+
class Solution {
93+
public String toHex(int num) {
94+
if (num == 0) {
95+
return "0";
96+
}
97+
StringBuilder sb = new StringBuilder();
98+
for (int i = 7; i >= 0; --i) {
99+
int x = (num >> (4 * i)) & 0xf;
100+
if (sb.length() > 0 || x != 0) {
101+
char c = x < 10 ? (char) (x + '0') : (char) (x - 10 + 'a');
102+
sb.append(c);
103+
}
104+
}
105+
return sb.toString();
106+
}
107+
}
108+
```
109+
110+
### **C++**
111+
112+
```cpp
113+
class Solution {
114+
public:
115+
string toHex(int num) {
116+
if (num == 0) return "0";
117+
string s = "";
118+
for (int i = 7; i >= 0; --i)
119+
{
120+
int x = (num >> (4 * i)) & 0xf;
121+
if (s.size() > 0 || x != 0)
122+
{
123+
char c = x < 10 ? (char) (x + '0') : (char) (x - 10 + 'a');
124+
s += c;
125+
}
126+
}
127+
return s;
128+
}
129+
};
130+
```
60131
132+
### **Go**
133+
134+
```go
135+
func toHex(num int) string {
136+
if num == 0 {
137+
return "0"
138+
}
139+
sb := &strings.Builder{}
140+
for i := 7; i >= 0; i-- {
141+
x := num >> (4 * i) & 0xf
142+
if x > 0 || sb.Len() > 0 {
143+
var c byte
144+
if x < 10 {
145+
c = '0' + byte(x)
146+
} else {
147+
c = 'a' + byte(x-10)
148+
}
149+
sb.WriteByte(c)
150+
}
151+
}
152+
return sb.String()
153+
}
61154
```
62155

63156
### **...**

Diff for: solution/0400-0499/0405.Convert a Number to Hexadecimal/README_EN.md

+93-2
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,112 @@
2626
<p>&nbsp;</p>
2727
<p><strong>Follow up:</strong> Could you solve it without using any built-in library method?</p>
2828

29-
3029
## Solutions
3130

3231
<!-- tabs:start -->
3332

3433
### **Python3**
3534

3635
```python
37-
36+
class Solution:
37+
def toHex(self, num: int) -> str:
38+
if num == 0:
39+
return '0'
40+
chars = '0123456789abcdef'
41+
s = []
42+
for i in range(7, -1, -1):
43+
x = (num >> (4 * i)) & 0xf
44+
if s or x != 0:
45+
s.append(chars[x])
46+
return ''.join(s)
3847
```
3948

4049
### **Java**
4150

4251
```java
52+
class Solution {
53+
public String toHex(int num) {
54+
if (num == 0) {
55+
return "0";
56+
}
57+
StringBuilder sb = new StringBuilder();
58+
while (num != 0) {
59+
int x = num & 15;
60+
if (x < 10) {
61+
sb.append(x);
62+
} else {
63+
sb.append((char) (x - 10 + 'a'));
64+
}
65+
num >>>= 4;
66+
}
67+
return sb.reverse().toString();
68+
}
69+
}
70+
```
71+
72+
```java
73+
class Solution {
74+
public String toHex(int num) {
75+
if (num == 0) {
76+
return "0";
77+
}
78+
StringBuilder sb = new StringBuilder();
79+
for (int i = 7; i >= 0; --i) {
80+
int x = (num >> (4 * i)) & 0xf;
81+
if (sb.length() > 0 || x != 0) {
82+
char c = x < 10 ? (char) (x + '0') : (char) (x - 10 + 'a');
83+
sb.append(c);
84+
}
85+
}
86+
return sb.toString();
87+
}
88+
}
89+
```
90+
91+
### **C++**
92+
93+
```cpp
94+
class Solution {
95+
public:
96+
string toHex(int num) {
97+
if (num == 0) return "0";
98+
string s = "";
99+
for (int i = 7; i >= 0; --i)
100+
{
101+
int x = (num >> (4 * i)) & 0xf;
102+
if (s.size() > 0 || x != 0)
103+
{
104+
char c = x < 10 ? (char) (x + '0') : (char) (x - 10 + 'a');
105+
s += c;
106+
}
107+
}
108+
return s;
109+
}
110+
};
111+
```
43112
113+
### **Go**
114+
115+
```go
116+
func toHex(num int) string {
117+
if num == 0 {
118+
return "0"
119+
}
120+
sb := &strings.Builder{}
121+
for i := 7; i >= 0; i-- {
122+
x := num >> (4 * i) & 0xf
123+
if x > 0 || sb.Len() > 0 {
124+
var c byte
125+
if x < 10 {
126+
c = '0' + byte(x)
127+
} else {
128+
c = 'a' + byte(x-10)
129+
}
130+
sb.WriteByte(c)
131+
}
132+
}
133+
return sb.String()
134+
}
44135
```
45136

46137
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
public:
3+
string toHex(int num) {
4+
if (num == 0) return "0";
5+
string s = "";
6+
for (int i = 7; i >= 0; --i)
7+
{
8+
int x = (num >> (4 * i)) & 0xf;
9+
if (s.size() > 0 || x != 0)
10+
{
11+
char c = x < 10 ? (char) (x + '0') : (char) (x - 10 + 'a');
12+
s += c;
13+
}
14+
}
15+
return s;
16+
}
17+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
func toHex(num int) string {
2+
if num == 0 {
3+
return "0"
4+
}
5+
sb := &strings.Builder{}
6+
for i := 7; i >= 0; i-- {
7+
x := num >> (4 * i) & 0xf
8+
if x > 0 || sb.Len() > 0 {
9+
var c byte
10+
if x < 10 {
11+
c = '0' + byte(x)
12+
} else {
13+
c = 'a' + byte(x-10)
14+
}
15+
sb.WriteByte(c)
16+
}
17+
}
18+
return sb.String()
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
class Solution:
2+
def toHex(self, num: int) -> str:
3+
if num == 0:
4+
return '0'
5+
chars = '0123456789abcdef'
6+
s = []
7+
for i in range(7, -1, -1):
8+
x = (num >> (4 * i)) & 0xf
9+
if s or x != 0:
10+
s.append(chars[x])
11+
return ''.join(s)

0 commit comments

Comments
 (0)