Skip to content

Commit 863e768

Browse files
committed
feat: add python and java solutions to leetcode problem: No.0202
1 parent ae17a8e commit 863e768

File tree

4 files changed

+92
-27
lines changed

4 files changed

+92
-27
lines changed

solution/0200-0299/0202.Happy Number/README.md

+34-2
Original file line numberDiff line numberDiff line change
@@ -31,15 +31,47 @@
3131
<!-- 这里可写当前语言的特殊实现逻辑 -->
3232

3333
```python
34-
34+
class Solution:
35+
def isHappy(self, n: int) -> bool:
36+
def get_next(n):
37+
s = 0
38+
while n > 0:
39+
n, digit = divmod(n, 10)
40+
s += digit ** 2
41+
return s
42+
43+
visited = set()
44+
while n != 1 and n not in visited:
45+
visited.add(n)
46+
n = get_next(n)
47+
return n == 1
3548
```
3649

3750
### **Java**
3851

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

4154
```java
42-
55+
class Solution {
56+
public boolean isHappy(int n) {
57+
Set<Integer> visited = new HashSet<>();
58+
while (n != 1 && !visited.contains(n)) {
59+
visited.add(n);
60+
n = getNext(n);
61+
}
62+
return n == 1;
63+
}
64+
65+
private int getNext(int n) {
66+
int s = 0;
67+
while (n > 0) {
68+
int digit = n % 10;
69+
s += digit * digit;
70+
n /= 10;
71+
}
72+
return s;
73+
}
74+
}
4375
```
4476

4577
### **...**

solution/0200-0299/0202.Happy Number/README_EN.md

+34-2
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,45 @@
3535
### **Python3**
3636

3737
```python
38-
38+
class Solution:
39+
def isHappy(self, n: int) -> bool:
40+
def get_next(n):
41+
s = 0
42+
while n > 0:
43+
n, digit = divmod(n, 10)
44+
s += digit ** 2
45+
return s
46+
47+
visited = set()
48+
while n != 1 and n not in visited:
49+
visited.add(n)
50+
n = get_next(n)
51+
return n == 1
3952
```
4053

4154
### **Java**
4255

4356
```java
44-
57+
class Solution {
58+
public boolean isHappy(int n) {
59+
Set<Integer> visited = new HashSet<>();
60+
while (n != 1 && !visited.contains(n)) {
61+
visited.add(n);
62+
n = getNext(n);
63+
}
64+
return n == 1;
65+
}
66+
67+
private int getNext(int n) {
68+
int s = 0;
69+
while (n > 0) {
70+
int digit = n % 10;
71+
s += digit * digit;
72+
n /= 10;
73+
}
74+
return s;
75+
}
76+
}
4577
```
4678

4779
### **...**
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,20 @@
11
class Solution {
22
public boolean isHappy(int n) {
3-
if (n <= 0) return false;
4-
int sum = 0;
5-
while (sum != n) {
6-
while (n > 0) {
7-
sum += Math.pow(n % 10, 2);
8-
n /= 10;
9-
}
10-
if (sum == 1) return true;
11-
if (sum == 4) return false;
12-
n = sum;
13-
sum = 0;
3+
Set<Integer> visited = new HashSet<>();
4+
while (n != 1 && !visited.contains(n)) {
5+
visited.add(n);
6+
n = getNext(n);
147
}
15-
return false;
8+
return n == 1;
169
}
17-
}
1810

19-
20-
// 递归
21-
class Solution {
22-
public boolean isHappy(int n) {
23-
if (n <= 0) return false;
24-
int sum = 0;
11+
private int getNext(int n) {
12+
int s = 0;
2513
while (n > 0) {
26-
sum += Math.pow(n % 10, 2);
14+
int digit = n % 10;
15+
s += digit * digit;
2716
n /= 10;
2817
}
29-
if (sum == 1) return true;
30-
if (sum == 4) return false;
31-
return isHappy(sum);
18+
return s;
3219
}
3320
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def isHappy(self, n: int) -> bool:
3+
def get_next(n):
4+
s = 0
5+
while n > 0:
6+
n, digit = divmod(n, 10)
7+
s += digit ** 2
8+
return s
9+
10+
visited = set()
11+
while n != 1 and n not in visited:
12+
visited.add(n)
13+
n = get_next(n)
14+
return n == 1

0 commit comments

Comments
 (0)