넘치게 채우기
[LeetCode] 2264. Largest 3-Same-Digit Number in String 본문
https://leetcode.com/problems/largest-3-same-digit-number-in-string/description/
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;
}
};
'PS > LeetCode' 카테고리의 다른 글
[LeetCode] 1716. Calculate Money in Leetcode Bank (0) | 2023.12.06 |
---|---|
[LeetCode] 1688. Count of Matches in Tournament (0) | 2023.12.05 |
[LeetCode] 1266. Minimum Time Visiting All Points (0) | 2023.12.03 |
[LeetCode] 1160. Find Words That Can Be Formed by Characters (0) | 2023.12.02 |
[LeetCode] 1662. Check If Two String Arrays are Equivalent (0) | 2023.12.01 |