반응형
https://leetcode.com/problems/find-common-characters/
문자열 다루는 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
1. alphabat별 전체 words의 최소 빈도를 저장할 vector minFreq를 선언 후 각 값을 INT_MAX로 초기화해줍니다.
2. 정답 변수 ans를 선언합니다.
📔 풀이과정
1. words를 순회하며 한 단어마다 alphabat별 빈도 수를 저장한뒤 minFreq과 비교해 각 alphabat별 최솟값을 minFreq에 저장합니다. 이렇게 하면 공통으로 존재하는 문자들의 빈도수가 저장되게 됩니다.
2. minFreq에 저장된 값만큼 alphabat을 ans에 push_back해줍니다.
📔 정답 출력 | 반환
ans를 반환합니다.
📕 Code
📔 C++
class Solution {
public:
vector<string> commonChars(vector<string>& words) {
vector <int> minFreq(26, INT_MAX);
vector <string> ans;
for(auto w : words) {
vector <int> freq(26,0);
for(auto c : w) freq[c - 'a']++;
for(int i = 0; i < 26; i++) minFreq[i] = min(minFreq[i], freq[i]);
}
for(int i = 0; i < 26; i++) {
for(int j = 0; j < minFreq[i]; j++)
ans.push_back(string(1, i + 'a'));
}
return ans;
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > String' 카테고리의 다른 글
(C++) - LeetCode (easy) 1108. Defanging an IP Address (0) | 2023.10.31 |
---|---|
(C++) - LeetCode (easy) 1078. Occurrences After Bigram (0) | 2023.10.25 |
(C++, Rust) - LeetCode (easy) 944. Delete Columns to Make Sorted (0) | 2023.09.12 |
(C++) - LeetCode (easy) 929. Unique Email Addresses (0) | 2023.09.05 |
(C++, Rust) - LeetCode (easy) 917. Reverse Only Letters (0) | 2023.08.31 |