Now build the -A flag of the cat tool, as a new function. It makes whitespace visible: every tab character (\t) is replaced by the two characters ^I and every line ends with a literal $ marker (so trailing spaces become obvious). Lines are then joined with newlines.
Note: real cat -A also shows other control characters (such as ^M) and non-ASCII bytes; this version only handles tabs and line ends, like cat -T -E. A blank line becomes just $, and an empty list gives an empty string.
Function signature:
public string ShowAllCat(List<string> lines)
Example:
Input: lines = ["hello\tworld", "foo"] Output: "hello^Iworld$\nfoo$" When printed: hello^Iworld$ foo$
Another example (a blank line, trailing spaces):
Input: lines = ["a\t", "", "x "] Output: "a^I$\n$\nx $" When printed: a^I$ $ x $
Use a
StringBuilder and walk the lines by index. For each line, replace tabs with "^I", append the result, then append "$". Put a "\n" between lines.
string.Replace(string, string) swaps every occurrence: lines[i].Replace("\t", "^I").
The full solution:
class Solution {
public string ShowAllCat(List<string> lines) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < lines.Count; i++) {
if (i > 0) {
sb.Append("\n");
}
sb.Append(lines[i].Replace("\t", "^I"));
sb.Append("$");
}
return sb.ToString();
}
}
Free plan: 30 tutor messages. Premium is unlimited.
