Skip to content

Commit 76738ff

Browse files
committed
feat: add solutions to leetcode problem: No.1796. Second Largest Digit in a String
1 parent b4ec5e8 commit 76738ff

File tree

4 files changed

+97
-6
lines changed

4 files changed

+97
-6
lines changed

solution/1700-1799/1796.Second Largest Digit in a String/README.md

+39-3
Original file line numberDiff line numberDiff line change
@@ -37,27 +37,63 @@
3737
<li><code>s</code> 只包含小写英文字母和(或)数字。</li>
3838
</ul>
3939

40-
4140
## 解法
4241

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

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+
4554
<!-- tabs:start -->
4655

4756
### **Python3**
4857

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

5160
```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
5372
```
5473

5574
### **Java**
5675

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

5978
```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+
}
6197
```
6298

6399
### **...**

solution/1700-1799/1796.Second Largest Digit in a String/README_EN.md

+29-3
Original file line numberDiff line numberDiff line change
@@ -33,21 +33,47 @@
3333
<li><code>s</code> consists of only lowercase English letters and/or digits.</li>
3434
</ul>
3535

36-
3736
## Solutions
3837

3938
<!-- tabs:start -->
4039

4140
### **Python3**
4241

4342
```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
4554
```
4655

4756
### **Java**
4857

4958
```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+
}
5177
```
5278

5379
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
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 numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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

0 commit comments

Comments
 (0)