Now build the -n flag of the cat tool, as a new function. It prints every line preceded by its 1-based line number, right-aligned in 6 columns, then a tab character, then the line text. Blank lines are numbered too, and an empty list gives an empty string.
Function signature:
fn numbered_cat(lines: Vec<String>) -> String
Format per line: the line number right-aligned in a field 6 characters wide (padded with spaces on the left), then a literal tab (\t), then the original line.
Example:
Input: lines = ["hello", "world", "foo"]
Output:
" 1\thello\n 2\tworld\n 3\tfoo"
When printed:
1 hello
2 world
3 foo
Build the result in a mutable
String. Loop over 0..lines.len(), add a "\n" before every line except the first, then add the formatted line.
format!("{:6}\t{}", i + 1, lines[i]) formats one entry; {:6} right-aligns a number in a field 6 characters wide.
The full solution:
impl Solution {
fn numbered_cat(lines: Vec<String>) -> String {
let mut result = String::new();
for i in 0..lines.len() {
if i > 0 {
result += "\n";
}
result += &format!("{:6}\t{}", i + 1, lines[i]);
}
return result;
}
}
Free plan: 30 tutor messages. Premium is unlimited.
Saved
Ctrl + Enter to check
