넘치게 채우기

[LeetCode] 2264. Largest 3-Same-Digit Number in String 본문

PS/LeetCode

[LeetCode] 2264. Largest 3-Same-Digit Number in String

riveroverflow 2023. 12. 4. 11:37
728x90
반응형

https://leetcode.com/problems/largest-3-same-digit-number-in-string/description/

 

Largest 3-Same-Digit Number in String - LeetCode

Can you solve this real interview question? Largest 3-Same-Digit Number in String - You are given a string num representing a large integer. An integer is good if it meets the following conditions: * It is a substring of num with length 3. * It consists of

leetcode.com

leetcode - Largest-3-Same-Digit Number in String

문제 유형 : 문자열 처리

문제 난이도 : Easy

 

문제

You are given a string num representing a large integer. An integer is good if it meets the following conditions:

  • It is a substring of num with length 3.
  • It consists of only one unique digit.

Return the maximum good integer as a string or an empty string "" if no such integer exists.

Note:

  • A substring is a contiguous sequence of characters within a string.
  • There may be leading zeroes in num or a good integer.

당신은 큰 정수의 문자열 num을 받는다. 정수는 아래 조건을 만족하면 좋은 정수이다.

- 3의 길이의 부분 문자열

- 한 가지 종류의 정수로 이루어짐

 

가장 큰 좋은 정수를 문자열로 반환하고, 없으면 ""을 반환하시오.

 

참고:

- 부분문자열은 문자열 내의 인접한 문자들이 같은 순서로 있는걸 말합니다.

- num이나 좋은 정수에 0이 있을수도 있습니다.

 

 

풀이

현재 숫자로 만들 수 있는 부분 문자열을 만드는 문자열 하나와, 항상 가장 큰 부분 문자열을 담는 문자열을 하나 만듭니다.

문자열을 인덱스 0부터 순회하면서,

i)문자열이 비어있거나 현재 순회하는 숫자가 부분문자열의 구성요소와 다르다면:

    부분문자열을 num[i]로 시작하여 초기화

ii)아니라면(현재 순회하는 숫자가 부분문자열의 구성요소와 같다면):

    부분문자열의 뒤에 num[i]추가

 

위 작업을 마치고, 만약 문자열의 길이가 3이 넘는다면, 기존의 가장 큰 부분 문자열과 비교하여 더 큰걸 저장시키고, 부분문자열을 빈 문자열로 초기화

 

위의 순회를 거치고, 가장 큰 부분 문자열을 반환하면 된다.

 

코드

C++

class Solution {
public:
    string largestGoodInteger(string num) {
        const int n = num.size();
        string digit = "";
        string answer = "";
        for(int i = 0; i < n; i++) {
            if(digit.size() == 0 || digit[digit.size()-1] != num[i]) {
                digit = num[i];
            } else {
                digit += num[i];
            }

            if(digit.size() >= 3) {
                answer = max(answer, digit);
                digit = "";
            }
        }

        return answer;
    }
};
728x90
반응형