class Solution { public: vector<string> removeComments(vector<string>& source) { vector<string> res; string ln; int state = 0; for (const auto & line : source) { for (int i = 0, ll = line.length(); i < ll; i++) { if (state == 0) { if (i < ll-1) { if (line[i] == '/' && line[i+1] == '/') break; // // comment, skip line else if (line[i] == '/' && line[i+1] == '*') { state = 1; i += 1; continue; } } ln.push_back(line[i]); } else if (state == 1) { // inside /* if (i < ll-1 && line[i] == '*' && line[i+1] == '/') { state = 0; i += 1; continue; } } } if (state == 0 && ln.length() > 0) { res.push_back(ln); ln = ""; } } if (ln.length() > 0) res.push_back(ln); return res; } };