반응형
https://leetcode.com/problems/reformat-phone-number/description/
문자열을 formatting하는 문제였습니다.
📕 풀이방법
📔 풀이과정
1. number에서 '-'와 ' '를 제거한 filter된 number를 반환하는 getFilteredNum을 구현해 지역변수 filteredNum을 선언 후 결과값을 저장해줍니다.
2. filteredNum에서 필요한 reformat을 진행한 결과를 반환하는 함수 getReformatNum을 구현해줍니다.
2-1. filteredNum에 대해 for loop를 수행하며 3개씩 끊어만든 문자열 뒤에 '-'를 달아주는데, overflow가 나지 않도록 주의하며 남은 문자열이 4개인 경우에는 3개씩이 아닌 2개씩 끊어 연결한 문자열에 '-'를 달아줍니다.
📔 정답 출력 | 반환
getReformatNum의 결과를 반환합니다.
📕 Code
📔 C++
class Solution {
public:
string getFilteredNum(string number) {
string num;
for(auto n : number) {
if (n != '-' && n != ' ') num += n;
}
return num;
}
string getReformatNum(string filteredNum) {
string reformatNum;
for(int i = 0; i < filteredNum.size(); i+=3) {
if (filteredNum.size() - i == 4) {
reformatNum += filteredNum.substr(i, 2) + '-';
i--;
} else if(i + 3 < filteredNum.size()) {
reformatNum += filteredNum.substr(i, 3) + '-';
} else {
reformatNum += filteredNum.substr(i);
}
}
return reformatNum;
}
string reformatNumber(string number) {
string filteredNum = getFilteredNum(number);
return getReformatNum(filteredNum);
}
};
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.