📖 Scenario: Imagine you are building a simple text tool that can reverse words or sentences. This is useful in games, puzzles, or checking palindromes.
🎯 Goal: You will create a Rust program that reverses a string using different methods step-by-step.
📋 What You'll Learn
Create a string variable with a specific value
Create a helper variable for the string length
Use a loop to reverse the string manually
Print the reversed string
💡 Why This Matters
🌍 Real World
Reversing strings is useful in text processing, puzzles, and checking palindromes.
💼 Career
Understanding string manipulation and loops is fundamental for programming jobs involving data processing and software development.
Progress0 / 4 steps
1
Create the original string
Create a variable called original and set it to the string "hello".
DSA Rust
Hint
Use let to create a variable and assign the string "hello" to it.
2
Create a length variable
Create a variable called length and set it to the length of the string original using original.len().
DSA Rust
Hint
Use original.len() to get the number of characters in the string.
3
Reverse the string using a loop
Create a mutable String variable called reversed and use a for loop with variable i from (0..length).rev() to push characters from original into reversed in reverse order. Use original.chars().nth(i).unwrap() to get each character.
DSA Rust
Hint
Create an empty string and add characters from the end of original to the start of reversed.
4
Print the reversed string
Use println! to print the variable reversed.
DSA Rust
Hint
Use println!("{}", reversed); to show the reversed string.
Practice
(1/5)
1. What does the chars().rev().collect() method chain do when applied to a Rust string?
easy
A. It reverses the characters of the string and collects them into a new string.
B. It sorts the characters of the string in ascending order.
C. It removes all whitespace characters from the string.
D. It converts the string to uppercase.
Solution
Step 1: Understand chars() method
The chars() method converts the string into an iterator over its characters.
Step 2: Apply rev() and collect()
The rev() method reverses the iterator, and collect() gathers the reversed characters into a new string.
Final Answer:
It reverses the characters of the string and collects them into a new string. -> Option A
2. Which of the following Rust code snippets correctly reverses a string s?
easy
A. let reversed: String = s.reverse();
B. let reversed: String = s.chars().rev().collect();
C. let reversed: String = s.collect().rev().chars();
D. let reversed: String = s.chars().collect().rev();
Solution
Step 1: Check method availability
Rust strings do not have a reverse() method, so let reversed: String = s.reverse(); is invalid.
Step 2: Analyze method chaining
let reversed: String = s.chars().rev().collect(); uses chars() to get characters, rev() to reverse, and collect() to form a new string, which is correct.
Final Answer:
let reversed: String = s.chars().rev().collect(); -> Option B
Quick Check:
Correct syntax for string reversal is let reversed: String = s.chars().rev().collect(); [OK]
Hint: Use chars().rev().collect() to reverse strings in Rust [OK]
Common Mistakes:
Using non-existent reverse() method on String
Wrong order of method calls
Trying to reverse after collecting into String
3. What is the output of the following Rust code?
let s = String::from("rust");
let reversed: String = s.chars().rev().collect();
println!("{}", reversed);
medium
A. Error: cannot reverse string
B. rust
C. tsur
D. tusr
Solution
Step 1: Understand input string
The string "rust" has characters 'r', 'u', 's', 't'.
Step 2: Reverse characters and collect
Using chars().rev().collect() reverses the characters to 't', 's', 'u', 'r' and collects into a new string.
Final Answer:
tsur -> Option C
Quick Check:
Reversed "rust" = "tsur" [OK]
Hint: Trace chars().rev().collect() to get reversed string output [OK]
Common Mistakes:
Expecting original string output
Mixing character order incorrectly
Assuming runtime error on reversal
4. Identify the error in this Rust code that attempts to reverse a string:
let s = String::from("hello");
let reversed = s.reverse();
println!("{}", reversed);
medium
A. reverse() returns a vector, not a string
B. Missing semicolon after println! macro
C. Cannot print reversed string directly
D. String type has no method named reverse()
Solution
Step 1: Check method existence on String
Rust's String type does not have a reverse() method, so calling it causes a compile error.
Step 2: Confirm other syntax correctness
The semicolon after println! is present, and printing a string is valid, so no errors there.
Final Answer:
String type has no method named reverse() -> Option D
Quick Check:
reverse() method does not exist on String [OK]
Hint: Remember: String has no reverse() method in Rust [OK]
Common Mistakes:
Assuming reverse() exists on String
Thinking reverse() returns vector automatically
Ignoring compiler error messages
5. You want to reverse a string but keep all Unicode grapheme clusters intact (like emojis or accented letters). Which Rust crate and approach is best suited for this?
hard
A. Use the unicode-segmentation crate to split by graphemes, then reverse and collect.
B. Use chars().rev().collect() directly on the string.
C. Convert string to bytes, reverse bytes, then convert back to string.
D. Use split_whitespace() and reverse the words.
Solution
Step 1: Understand Unicode grapheme clusters
Some characters like emojis or accented letters are multiple Unicode code points but one visible character (grapheme cluster).
Step 2: Use appropriate crate and method
The unicode-segmentation crate provides graphemes() method to split string by grapheme clusters, which can then be reversed safely.
Final Answer:
Use the unicode-segmentation crate to split by graphemes, then reverse and collect. -> Option A