코딩테스트 준비/leetcode

1796. Second Largest Digit in a String [Easy]

MAKGA 2021. 6. 12. 19:25
320x100

https://leetcode.com/problems/second-largest-digit-in-a-string/

 

Second Largest Digit in a String - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

example
Input: s = "dfa12321afd"
Output: 2
Explanation: The digits that appear in s are [1, 2, 3]. The second largest digit is 2.
Input: s = "abc1111"
Output: -1
Explanation: The digits that appear in s are [1]. There is no second largest digit. 

 

주어진 문자열에서 숫자만 가지고와서 2번째로 큰 숫자를 리턴하는 간단한 문제다.

백신맞고 몸이 안좋아 약을 먹었더니 Medium을 풀 정신이 아니여서 Easy 하나 물고 마음의 위안을 삼는다.

 

class Solution {
public:
    int secondHighest(string& s) {
        int first_large = -1;
        int second_large = -1;
        char zero_ascii = '0';
        
        for(char c : s) {
            if (!std::isdigit(c)) {
                continue;
            }
            
            int value = c-zero_ascii;
            if (first_large < value) {
                second_large = first_large;
                first_large = value;
            }
            else if (first_large == value) {
                
            }
            else if (second_large < value) {
                second_large = value;
            }
        }
        return second_large;
    }
};

 

vector<int> v에 숫자만 다 넣고 unique(v.begin(), v.end()); 돌린 뒤에 sort(v.begin(), v.end(), greater<int>) 실행하고

v[1]을 리턴해도 될거 같지만 그냥 변수로 풀어봤다.

빠르면 되었지 뭐..

 

다른 제출자들과의 성능 비교 결과
실행 결과

320x100