//给你一个混合字符串 s ，请你返回 s 中 第二大 的数字，如果不存在第二大的数字，请你返回 -1 。 
//
// 混合字符串 由小写英文字母和数字组成。 
//
// 
//
// 示例 1： 
//
// 
//输入：s = "dfa12321afd"
//输出：2
//解释：出现在 s 中的数字包括 [1, 2, 3] 。第二大的数字是 2 。
// 
//
// 示例 2： 
//
// 
//输入：s = "abc1111"
//输出：-1
//解释：出现在 s 中的数字只包含 [1] 。没有第二大的数字。
// 
//
// 
//
// 提示： 
//
// 
// 1 <= s.length <= 500 
// s 只包含小写英文字母和（或）数字。 
// 
// Related Topics 字符串 
// 👍 2 👎 0

package leetcode.editor.cn;

//1796:字符串中第二大的数字
public class SecondLargestDigitInAString {
    public static void main(String[] args) {
        //测试代码
        Solution solution = new SecondLargestDigitInAString().new Solution();
    }

    //力扣代码
    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public int secondHighest(String s) {
            int max = -1;
            int second = -2;
            int size = s.length();
            for (int i = 0; i < size; i++) {
                String temp;
                temp = i + 1 < size ? s.substring(i, i + 1) : s.substring(i);
                if (temp.matches("[0-9]+")) {
                    int cur = Integer.parseInt(temp);
                    if (cur > max) {
                        second = max;
                        max = cur;
                    } else if (cur > second && cur != max) {
                        second = cur;
                    }
                }
            }
            return second >= 0 ? second : -1;
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}