Coding Test/Algorithm & Data Structure
[C++] 문자열 split
짱정연
2023. 10. 16. 23:13
반응형
들어가며
코딩테스트에서는 문자열을 split하는 로직(특정 문자열을 기준으로 쪼개어 배열화)이 많이 사용된다. 하지만 C++ STL에서는 관련된 함수를 지원하지 않기 때문에 직접 구현해야 한다.
split() 구현
// input: 쪼갤 문자열
// delimiter: 기준 문자열
vector<string> split(string input, string delimiter) {
vector<string> ret;
long long pos = 0;
string token = "";
while ((pos = input.find(delimiter)) != string::npos) {
token = input.substr(0, pos);
ret.push_back(token);
input.erase(0, pos + delimiter.length());
}
ret.push_back(input);
return ret;
}
while문 부분이 핵심 로직이다.
- while ((pos = input.find(delimiter)) != string::npos) - input에서 delimiter을 못 찾을 때까지 반복한다.
- input에 delimiter가 있으면 계속 반복한다.
- token = input.substr(0, pos) - 찾았다면, 해당 pos까지 문자열을 추출한다.
- ret.push_back(token) - ret이라는 배열에 추출한 문자열을 넣는다.
- input.erase(0, pos + delimiter.length()) - 앞에서 시작해서 기준 문자열까지의 문자열을 지운다.
- ex) abcdabcdabc를 'd'를 기준으로 나눴다면, abcdabcdabc는
abcdabcdabc가 된다.
- ex) abcdabcdabc를 'd'를 기준으로 나눴다면, abcdabcdabc는
Reference
반응형