File tree 4 files changed +92
-27
lines changed
solution/0200-0299/0202.Happy Number
4 files changed +92
-27
lines changed Original file line number Diff line number Diff line change 31
31
<!-- 这里可写当前语言的特殊实现逻辑 -->
32
32
33
33
``` 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
35
48
```
36
49
37
50
### ** Java**
38
51
39
52
<!-- 这里可写当前语言的特殊实现逻辑 -->
40
53
41
54
``` 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
+ }
43
75
```
44
76
45
77
### ** ...**
Original file line number Diff line number Diff line change 35
35
### ** Python3**
36
36
37
37
``` 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
39
52
```
40
53
41
54
### ** Java**
42
55
43
56
``` 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
+ }
45
77
```
46
78
47
79
### ** ...**
Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
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 );
14
7
}
15
- return false ;
8
+ return n == 1 ;
16
9
}
17
- }
18
10
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 ;
25
13
while (n > 0 ) {
26
- sum += Math .pow (n % 10 , 2 );
14
+ int digit = n % 10 ;
15
+ s += digit * digit ;
27
16
n /= 10 ;
28
17
}
29
- if (sum == 1 ) return true ;
30
- if (sum == 4 ) return false ;
31
- return isHappy (sum );
18
+ return s ;
32
19
}
33
20
}
Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments