vector<pair<string,int>> alpha;
<영단어 앞 2자리, 영단어 길이>로 저장해서 사전처럼 사용int cur
: 현재 탐색중인 글자 위치string ans
: 정답 문자열 ➡️ 최종적으로 stoi
로 int
형으로 바꿔서 answer
에 저장자리 옮겨가면서 문자를 읽어와서 판별
alpha pair
에서 탐색ans
포함시키고 자릿수 더하기문자열의 경우, 현재 문자열에 맞는 알파벳을 찾기 위해 매번 for 문으로 돌려서 찾는 방법이 비효율적
그렇다고 unordere_map
을 쓰기에는 그때마다 find
함수 불러서 iterator
값 빼주고 하는 과정도 딱히 효율적이지는 않은 것 같음
문자열 치환 함수 regex_replace
사용해서 문자를 숫자로 치환해주기
문자열 split
하고 그럴 필요없이 0~9까지 차례차례 바꿔주고 s
를 갱신해주면 최종적으로 모든 문자를 숫자로 변환할 수 있음
🔗 [C++] 문자열 치환 함수: replace, regex_replace
#include <bits/stdc++.h>
using namespace std;
int solution(string s) {
s = regex_replace(s, regex("zero"), "0");
s = regex_replace(s, regex("one"), "1");
s = regex_replace(s, regex("two"), "2");
s = regex_replace(s, regex("three"), "3");
s = regex_replace(s, regex("four"), "4");
s = regex_replace(s, regex("five"), "5");
s = regex_replace(s, regex("six"), "6");
s = regex_replace(s, regex("seven"), "7");
s = regex_replace(s, regex("eight"), "8");
s = regex_replace(s, regex("nine"), "9");
return stoi(s);
}