Hướng dẫn giải của Xóa trắng
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Tác giả:
1. Dùng vòng lặp thủ công
Duyệt qua từng ký tự của xâu, chỉ thêm các ký tự không phải khoảng trắng vào một xâu mới.
Mã C++:
cpp
Sao chép mã
#include <iostream>
using namespace std;
int main() {
string s, result;
getline(cin, s); // Nhập chuỗi từ người dùng
for (char c : s) {
if (c != ' ') {
result += c;
}
}
cout << result; // In ra chuỗi đã loại bỏ khoảng trắng
return 0;
}
2. Sử dụng hàm erase
Duyệt qua xâu và dùng phương thức erase để xóa các ký tự trắng.
Mã C++:
cpp
Sao chép mã
#include <iostream>
using namespace std;
int main() {
string s;
getline(cin, s); // Nhập chuỗi từ người dùng
for (size_t i = 0; i < s.length(); ) {
if (s[i] == ' ') {
s.erase(i, 1); // Xóa ký tự tại vị trí i
} else {
i++;
}
}
cout << s; // In ra chuỗi đã loại bỏ khoảng trắng
return 0;
}
3. Sử dụng hàm remove từ <algorithm>
Hàm std::remove có thể di chuyển tất cả các ký tự không phải khoảng trắng về đầu chuỗi và trả về con trỏ đến vị trí mới của chuỗi.
Mã C++:
cpp
Sao chép mã
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
string s;
getline(cin, s); // Nhập chuỗi từ người dùng
s.erase(remove(s.begin(), s.end(), ' '), s.end());
cout << s; // In ra chuỗi đã loại bỏ khoảng trắng
return 0;
}
4. Sử dụng stringstream
Tách chuỗi thành các từ dựa trên khoảng trắng và ghép lại thành chuỗi mới.
Mã C++:
cpp
Sao chép mã
#include <iostream>
#include <sstream>
using namespace std;
int main() {
string s, word, result;
getline(cin, s); // Nhập chuỗi từ người dùng
stringstream ss(s);
while (ss >> word) {
result += word; // Ghép từ mà không thêm khoảng trắng
}
cout << result; // In ra chuỗi đã loại bỏ khoảng trắng
return 0;
}
5. Sử dụng biểu thức chính quy (regex)
Sử dụng thư viện <regex> để tìm và xóa các ký tự trắng.
Mã C++:
cpp
Sao chép mã
#include <iostream>
#include <regex>
using namespace std;
int main() {
string s;
getline(cin, s); // Nhập chuỗi từ người dùng
s = regex_replace(s, regex("\\s+"), ""); // Thay thế khoảng trắng bằng chuỗi rỗng
cout << s; // In ra chuỗi đã loại bỏ khoảng trắng
return 0;
}
Lựa chọn phương pháp
Dùng vòng lặp: Đơn giản, dễ hiểu, phù hợp với những người mới học.
Dùng erase hoặc remove: Hiệu quả hơn về hiệu suất khi làm việc với chuỗi lớn.
Dùng stringstream: Phù hợp khi bạn cần xử lý thêm các từ.
Dùng regex: Mạnh mẽ, nhưng có thể chậm hơn khi xử lý chuỗi lớn.
Bình luận