본문 바로가기

Algorithm/Brute Force

(C++) - LeetCode (easy) 1763. Longest Nice Substring

반응형

https://leetcode.com/problems/longest-nice-substring/

전수조사 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

정답변수 substring을 선언해줍니다.

📔 풀이과정

1. i에서 j길이의 부분 문자열을 구하기 위해 2차원 for문을 구현해줍니다.

2. 구한 부분 문자열에서 유효한 문자열인지 검사하기 위한 1차원 for문이 필요하므로 총 3차원 for loop를 수행합니다.

3. 3차원 for loop서 구한 부분 문자열이 유효한지는 확인하는 문자의 toupper와 tolower가 각각 존재하면 됩니다.

4. 유효한 부분 문자열 이라면 size가 더 큰 값을 substring에 저장합니다.

📔 정답 출력 | 반환

substring을 반환합니다.


📕 Code

📔 C++

class Solution {
public:
    string longestNiceSubstring(string s) {
        string substring;
        for(int i = 0; i < s.size(); i++) {
            for(int j = 1; j <= s.size(); j++) {
                string sb = s.substr(i,j);
                bool isValid = true;
                for(int k = 0; k < sb.size(); k++) {
                    char lower = tolower(sb[k]);
                    char upper = toupper(sb[k]);
                    if (sb.find(lower) == string::npos || sb.find(upper) == string::npos) {
                        isValid = false;
                        break;
                    }
                }
                if(isValid) {
                    if (substring.size() < sb.size()) {
                        substring = sb;
                    }
                }
            }
        }
        return substring;
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.