split()

Kim Yuhyeon·2023년 4월 24일
0

알고리즘 + 자료구조

목록 보기
95/161

C++에서는 split()을 지원하지 않음

구현

  • 시간복잡도 : O(n)
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;
}
  1. input에서 delimiter을 찾는다. 못 찾을 때까지 반복됩니다.
  2. 찾았다면 해당 pos까지 해당 부분 문자열을 추출합니다.

ex. abcd 에서 d를 찾았다면 ?

  • pos는 3을 반환하고 abc를 추출함.
  1. 앞에서부터 문자열을 지운다.

ex. abcdabc 에서 delimiter가 d이면

  • pos = 3, delimiter의 사이즈는 1
  • 앞에서부터 4의 크기의 문자열을 제거하여
  • abc만 남는다.

0개의 댓글