|
5 | 5 | "num1,n,num2,m,expected", |
6 | 6 | [ |
7 | 7 | # Test case 1: Normal merge |
8 | | - ([1,2,3,0,0,0], 3, [2,5,6], 3, [1,2,2,3,5,6]), |
9 | | -
|
| 8 | + ([1, 2, 3, 0, 0, 0], 3, [2, 5, 6], 3, [1, 2, 2, 3, 5, 6]), |
10 | 9 | # Test case 2: num1 is empty except for zeroes |
11 | 10 | ([0], 0, [1], 1, [1]), |
12 | | -
|
13 | 11 | # Test case 3: num2 is empty, num1 should remain the same |
14 | 12 | ([1], 1, [], 0, [1]), |
15 | | -
|
16 | 13 | # Test case 4: All elements in num2 are smaller |
17 | | - ([4,5,6,0,0,0], 3, [1,2,3], 3, [1,2,3,4,5,6]), |
18 | | -
|
| 14 | + ([4, 5, 6, 0, 0, 0], 3, [1, 2, 3], 3, [1, 2, 3, 4, 5, 6]), |
19 | 15 | # Test case 5: All elements in num2 are larger |
20 | | - ([1,2,3,0,0,0], 3, [4,5,6], 3, [1,2,3,4,5,6]), |
21 | | -
|
| 16 | + ([1, 2, 3, 0, 0, 0], 3, [4, 5, 6], 3, [1, 2, 3, 4, 5, 6]), |
22 | 17 | # Test case 6: num1 and num2 have same values |
23 | | - ([2,2,3,0,0,0], 3, [2,2,3], 3, [2,2,2,2,3,3]), |
24 | | -
|
| 18 | + ([2, 2, 3, 0, 0, 0], 3, [2, 2, 3], 3, [2, 2, 2, 2, 3, 3]), |
25 | 19 | # Test case 7: One list contains all duplicates |
26 | | - ([1,1,1,0,0,0], 3, [1,1,1], 3, [1,1,1,1,1,1]), |
27 | | -
|
| 20 | + ([1, 1, 1, 0, 0, 0], 3, [1, 1, 1], 3, [1, 1, 1, 1, 1, 1]), |
28 | 21 | # Test case 8: Large input where num2 fills all of num1 |
29 | | - ([0,0,0], 0, [1,2,3], 3, [1,2,3]), |
30 | | -
|
| 22 | + ([0, 0, 0], 0, [1, 2, 3], 3, [1, 2, 3]), |
31 | 23 | # Test case 9: Already merged |
32 | | - ([1,2,3], 3, [], 0, [1,2,3]), |
33 | | -
|
| 24 | + ([1, 2, 3], 3, [], 0, [1, 2, 3]), |
34 | 25 | # Test case 10: Mix of negative numbers |
35 | | - ([-1,0,0,3,3,3,0,0,0], 6, [1,2,2], 3, [-1,0,0,1,2,2,3,3,3]), |
36 | | - ] |
| 26 | + ([-1, 0, 0, 3, 3, 3, 0, 0, 0], 6, [1, 2, 2], 3, [-1, 0, 0, 1, 2, 2, 3, 3, 3]), |
| 27 | + ], |
37 | 28 | ) |
38 | 29 | def test_merge_sorted_array_88(num1, n, num2, m, expected): |
39 | 30 | """ |
@@ -98,3 +89,28 @@ def test_max_profit(prices, expected): |
98 | 89 |
|
99 | 90 | solution = Solution() |
100 | 91 | assert solution.maxProfit(prices) == expected |
| 92 | + |
| 93 | + |
| 94 | +@pytest.mark.parametrize( |
| 95 | + "s, expected", |
| 96 | + [ |
| 97 | + ("dfa12321afd", 2), # normal case → digits: {1,2,3} |
| 98 | + ("abc1111", -1), # only one unique digit |
| 99 | + ("abc", -1), # no digits |
| 100 | + ("ck077", 0), # digits: {0,7} → second highest = 0 |
| 101 | + ("sjhtz8344", 4), # digits: {3,4,8} → second = 4 |
| 102 | + ("aaaa9998", 8), # digits: {8,9} → second = 8 |
| 103 | + ("0", -1), # only one digit |
| 104 | + ("9876543210", 8), # all digits → second = 8 |
| 105 | + ("2abc3d4e5f6", 5), # scattered digits → second = 5 |
| 106 | + ("99", -1), # duplicates only |
| 107 | + ("a1b2c3d4e5", 4), # increasing digits |
| 108 | + ("5a5b5c5d5", -1), # one unique digit seen multiple times |
| 109 | + ("z1y0x9w", 1), # digits: {0,1,9} → second = 1 |
| 110 | + ], |
| 111 | +) |
| 112 | +def test_second_highest(s, expected): |
| 113 | + from LeetCode.easy.second_largest_digit_in_string_1796 import Solution |
| 114 | + |
| 115 | + solution = Solution() |
| 116 | + assert solution.secondHighest(s) == expected |
0 commit comments