반응형
https://leetcode.com/problems/number-of-different-integers-in-a-string/
📕 풀이방법
📔 입력 및 초기화
word 길이 sz, 정수 문자열 intWord, 정수 문자열을 key로 빈도수를 value로 intFrequencyMap을 선언후 적절히 초기화해줍니다.
📔 풀이과정
word의 원소를 순회하며 다음을 진행합니다.
1. i가 sz미만이고 현재 문자가 숫자인 동안 while loop를 수행하며 intWord에 현재 문자를 우측 뒤에 붙여주고 i를 증가시켜 줍니다.
2. intWord에 길이가 존재한다면 앞에 0을 제거한 trimWord값을 key로 intFrequencyMap에서 찾아 빈도수를 높여줍니다. 그 후 intWord를 다시 빈 문자열로 초기화해줍니다.
📔 정답 출력 | 반환
intFrequencyMap에 word에 있는 모든 부분 정수 문자열들이 저장되어있고 그 종류인 size를 반환합니다.
📕 Code
📔 C++
class Solution {
public:
string trimWord(string word) {
string trimmed;
int piv = 0;
for(int i = 0; i < word.size(); i++) {
if (word[i] != '0') break;
piv++;
}
return word.substr(piv);
}
int numDifferentIntegers(string word) {
int sz = word.size();
string intWord = "";
map <string, int> intFrequencyMap;
for(int i = 0; i < sz; i++) {
while (i < sz && isdigit(word[i])) {
intWord += word[i];
i++;
}
if (intWord.size()) {
intFrequencyMap[trimWord(intWord)]++;
intWord = "";
}
}
return intFrequencyMap.size();
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.