File tree 4 files changed +97
-6
lines changed
solution/1700-1799/1796.Second Largest Digit in a String
4 files changed +97
-6
lines changed Original file line number Diff line number Diff line change 37
37
<li><code>s</code> 只包含小写英文字母和(或)数字。</li>
38
38
</ul >
39
39
40
-
41
40
## 解法
42
41
43
42
<!-- 这里可写通用的实现逻辑 -->
44
43
44
+ 假设字符串最大的数为 ` largestDigit ` ,第二大的数为 ` secondLargestDigit ` ,初始化均为 -1。
45
+
46
+ 遍历字符串,判断当前字符是否为数字型字符。若是,先转为数字 ` num ` 。然后判断数字与 ` largestDigit ` 、` secondLargestDigit ` 的大小关系:
47
+
48
+ - 若 ` num > largestDigit ` ,将 ` secondLargestDigit ` 更新为 ` largestDigit ` ,而 ` largestDigit ` 更新为 num;
49
+ - 若 ` num > secondLargestDigit ` ,并且 ` num < largestDigit ` ,将 ` secondLargestDigit ` 更新为 num;
50
+ - 其他情况不做处理。
51
+
52
+ 最后返回 ` secondLargestDigit ` 即可。
53
+
45
54
<!-- tabs:start -->
46
55
47
56
### ** Python3**
48
57
49
58
<!-- 这里可写当前语言的特殊实现逻辑 -->
50
59
51
60
``` python
52
-
61
+ class Solution :
62
+ def secondHighest (self , s : str ) -> int :
63
+ largest_digit = second_largest_digit = - 1
64
+ for c in s:
65
+ if c.isdigit():
66
+ num = int (c)
67
+ if num > largest_digit:
68
+ second_largest_digit, largest_digit = largest_digit, num
69
+ elif num > second_largest_digit and num < largest_digit:
70
+ second_largest_digit = num
71
+ return second_largest_digit
53
72
```
54
73
55
74
### ** Java**
56
75
57
76
<!-- 这里可写当前语言的特殊实现逻辑 -->
58
77
59
78
``` java
60
-
79
+ class Solution {
80
+ public int secondHighest (String s ) {
81
+ int largestDigit = - 1 , secondLargestDigit = - 1 ;
82
+ for (int i = 0 ; i < s. length(); ++ i) {
83
+ char c = s. charAt(i);
84
+ if (c >= ' 0' && c <= ' 9' ) {
85
+ int num = c - ' 0' ;
86
+ if (num > largestDigit) {
87
+ secondLargestDigit = largestDigit;
88
+ largestDigit = num;
89
+ } else if (num > secondLargestDigit && num < largestDigit) {
90
+ secondLargestDigit = num;
91
+ }
92
+ }
93
+ }
94
+ return secondLargestDigit;
95
+ }
96
+ }
61
97
```
62
98
63
99
### ** ...**
Original file line number Diff line number Diff line change 33
33
<li><code>s</code> consists of only lowercase English letters and/or digits.</li>
34
34
</ul >
35
35
36
-
37
36
## Solutions
38
37
39
38
<!-- tabs:start -->
40
39
41
40
### ** Python3**
42
41
43
42
``` python
44
-
43
+ class Solution :
44
+ def secondHighest (self , s : str ) -> int :
45
+ largest_digit = second_largest_digit = - 1
46
+ for c in s:
47
+ if c.isdigit():
48
+ num = int (c)
49
+ if num > largest_digit:
50
+ second_largest_digit, largest_digit = largest_digit, num
51
+ elif num > second_largest_digit and num < largest_digit:
52
+ second_largest_digit = num
53
+ return second_largest_digit
45
54
```
46
55
47
56
### ** Java**
48
57
49
58
``` java
50
-
59
+ class Solution {
60
+ public int secondHighest (String s ) {
61
+ int largestDigit = - 1 , secondLargestDigit = - 1 ;
62
+ for (int i = 0 ; i < s. length(); ++ i) {
63
+ char c = s. charAt(i);
64
+ if (c >= ' 0' && c <= ' 9' ) {
65
+ int num = c - ' 0' ;
66
+ if (num > largestDigit) {
67
+ secondLargestDigit = largestDigit;
68
+ largestDigit = num;
69
+ } else if (num > secondLargestDigit && num < largestDigit) {
70
+ secondLargestDigit = num;
71
+ }
72
+ }
73
+ }
74
+ return secondLargestDigit;
75
+ }
76
+ }
51
77
```
52
78
53
79
### ** ...**
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public int secondHighest (String s ) {
3
+ int largestDigit = -1 , secondLargestDigit = -1 ;
4
+ for (int i = 0 ; i < s .length (); ++i ) {
5
+ char c = s .charAt (i );
6
+ if (c >= '0' && c <= '9' ) {
7
+ int num = c - '0' ;
8
+ if (num > largestDigit ) {
9
+ secondLargestDigit = largestDigit ;
10
+ largestDigit = num ;
11
+ } else if (num > secondLargestDigit && num < largestDigit ) {
12
+ secondLargestDigit = num ;
13
+ }
14
+ }
15
+ }
16
+ return secondLargestDigit ;
17
+ }
18
+ }
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def secondHighest (self , s : str ) -> int :
3
+ largest_digit = second_largest_digit = - 1
4
+ for c in s :
5
+ if c .isdigit ():
6
+ num = int (c )
7
+ if num > largest_digit :
8
+ second_largest_digit , largest_digit = largest_digit , num
9
+ elif num > second_largest_digit and num < largest_digit :
10
+ second_largest_digit = num
11
+ return second_largest_digit
You can’t perform that action at this time.
0 commit comments