반응형
https://leetcode.com/problems/substrings-of-size-three-with-distinct-characters/description/
부분 문자열로 전수 조사하는 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
정답 변수 ans를 선언해줍니다.
📔 풀이과정
1. s에 대해 원소를 순회하며 시작점 i 기준으로 길이 3의 부분 문자열을 변수 sub에 저장합니다.2. sub문자열이 반복되는지 isWordRepeated함수를 수행해 반복되지 않았다면 ans를 1씩 더해줍니다. 2-1. isWordRepeated함수는 내부에 key alphabat, value 빈도수를 가지는 alphaMap을 선언해 이미 존재하는 alphabat이 있다면 value가 양수이므로 true를 for문 모두 수행후 false를 반환합니다.
📔 정답 출력 | 반환
ans를 반환합니다.
📕 Code
📔 C++
class Solution {
public:
bool isWordRepeated(string word) {
map <char, int> alphaMap;
for (char w : word) {
if(alphaMap[w]) return true;
alphaMap[w]++;
}
return false;
}
int countGoodSubstrings(string s) {
int ans = 0;
for(int i = 0; i < s.size(); i++) {
string sub = s.substr(i,3);
if (sub.size() < 3) continue;
if(!isWordRepeated(sub)) ans++;
}
return ans;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.