LeetCode Solutions
722. Remove Comments
Time: Space:
class Solution {
public:
vector<string> removeComments(vector<string>& source) {
vector<string> 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;
}
};
class Solution {
public List<String> removeComments(String[] source) {
List<String> 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;
}
}
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