Class Solution

java.lang.Object
g0701_0800.s0722_remove_comments.Solution

public class Solution extends Object
722 - Remove Comments.<p>Medium</p> <p>Given a C++ program, remove comments from it. The program source is an array of strings <code>source</code> where <code>source[i]</code> is the <code>i<sup>th</sup></code> line of the source code. This represents the result of splitting the original source code string by the newline character <code>'\n'</code>.</p> <p>In C++, there are two types of comments, line comments, and block comments.</p> <ul> <li>The string <code>&quot;//&quot;</code> denotes a line comment, which represents that it and the rest of the characters to the right of it in the same line should be ignored.</li> <li>The string <code>&quot;/*&quot;</code> denotes a block comment, which represents that all characters until the next (non-overlapping) occurrence of <code>&quot;*/&quot;</code> should be ignored. (Here, occurrences happen in reading order: line by line from left to right.) To be clear, the string <code>&quot;/*/&quot;</code> does not yet end the block comment, as the ending would be overlapping the beginning.</li> </ul> <p>The first effective comment takes precedence over others.</p> <ul> <li>For example, if the string <code>&quot;//&quot;</code> occurs in a block comment, it is ignored.</li> <li>Similarly, if the string <code>&quot;/*&quot;</code> occurs in a line or block comment, it is also ignored.</li> </ul> <p>If a certain line of code is empty after removing comments, you must not output that line: each string in the answer list will be non-empty.</p> <p>There will be no control characters, single quote, or double quote characters.</p> <ul> <li>For example, <code>source = &quot;string s = &quot;/* Not a comment. */&quot;;&quot;</code> will not be a test case.</li> </ul> <p>Also, nothing else such as defines or macros will interfere with the comments.</p> <p>It is guaranteed that every open block comment will eventually be closed, so <code>&quot;/*&quot;</code> outside of a line or block comment always starts a new comment.</p> <p>Finally, implicit newline characters can be deleted by block comments. Please see the examples below for details.</p> <p>After removing the comments from the source code, return <em>the source code in the same format</em>.</p> <p><strong>Example 1:</strong></p> <p><strong>Input:</strong> source = [&ldquo;/*Test program */&rdquo;, &ldquo;int main()&rdquo;, &quot;{ &quot;, &quot; // variable declaration &quot;, &ldquo;int a, b, c;&rdquo;, &ldquo;/* This is a test&rdquo;, &quot; multiline &quot;, &quot; comment for &ldquo;, &quot; testing */&rdquo;, &ldquo;a = b + c;&rdquo;, &ldquo;}&rdquo;]</p> <p><strong>Output:</strong> [&ldquo;int main()&rdquo;,&ldquo;{ &ldquo;,&rdquo; &ldquo;,&ldquo;int a, b, c;&rdquo;,&ldquo;a = b + c;&rdquo;,&rdquo;}&rdquo;]</p> <p><strong>Explanation:</strong> The line by line code is visualized as below:</p> <pre><code> /*Test program */ int main() { // variable declaration int a, b, c; /* This is a test multiline comment for testing */ a = b + c; } The string /* denotes a block comment, including line 1 and lines 6-9. The string // denotes line 4 as comments. The line by line output code is visualized as below: int main() { int a, b, c; a = b + c; } </code></pre> <p><strong>Example 2:</strong></p> <p><strong>Input:</strong> source = [&ldquo;a/*comment&rdquo;, &ldquo;line&rdquo;, &ldquo;more_comment*/b&rdquo;]</p> <p><strong>Output:</strong> [&ldquo;ab&rdquo;]</p> <p><strong>Explanation:</strong> The original source string is &ldquo;a/<em>comment\nline\nmore_comment</em>/b&rdquo;, where we have bolded the newline characters. After deletion, the implicit newline characters are deleted, leaving the string &ldquo;ab&rdquo;, which when delimited by newline characters becomes [&ldquo;ab&rdquo;].</p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= source.length <= 100</code></li> <li><code>0 <= source[i].length <= 80</code></li> <li><code>source[i]</code> consists of printable <strong>ASCII</strong> characters.</li> <li>Every open block comment is eventually closed.</li> <li>There are no single-quote or double-quote in the input.</li> </ul>
  • Constructor Details

    • Solution

      public Solution()
  • Method Details