1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 class Solution { public: vector removeComments(vector& source) { vector ans; bool commenting = false; string modified; for (const string& line : source) { for (int i = 0; i < line.length();) { if (i + 1 == line.length()) { if (!commenting) modified += line[i]; ++i; break; } const string& twoChars = line.substr(i, 2); if (twoChars == "/*" && !commenting) { commenting = true; i += 2; } else if (twoChars == "*/" && commenting) { commenting = false; i += 2; } else if (twoChars == "//") { if (!commenting) break; else i += 2; } else { if (!commenting) modified += line[i]; ++i; } } if (modified.length() > 0 && !commenting) { ans.push_back(modified); modified = ""; } } return ans; } }; 
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 class Solution { public List removeComments(String[] source) { List ans = new ArrayList<>(); boolean commenting = false; StringBuilder modified = new StringBuilder(); for (final String line : source) { for (int i = 0; i < line.length();) { if (i + 1 == line.length()) { if (!commenting) modified.append(line.charAt(i)); ++i; break; } String twoChars = line.substring(i, i + 2); if (twoChars.equals("/*") && !commenting) { commenting = true; i += 2; } else if (twoChars.equals("*/") && commenting) { commenting = false; i += 2; } else if (twoChars.equals("//")) { if (!commenting) break; else i += 2; } else { if (!commenting) modified.append(line.charAt(i)); ++i; } } if (modified.length() > 0 && !commenting) { ans.add(modified.toString()); modified.setLength(0); } } return ans; } } 
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 class Solution: def removeComments(self, source: List[str]) -> List[str]: ans = [] commenting = False modified = '' for line in source: i = 0 while i < len(line): if i + 1 == len(line): if not commenting: modified += line[i] i += 1 break twoChars = line[i:i + 2] if twoChars == '/*' and not commenting: commenting = True i += 2 elif twoChars == '*/' and commenting: commenting = False i += 2 elif twoChars == '//': if not commenting: break else: i += 2 else: if not commenting: modified += line[i] i += 1 if modified and not commenting: ans.append(modified) modified = '' return ans