[STL_C++Stack] reverseString
Đề bài
Cho một string, nhiệm vụ của bạn là viết hàm đảo ngược string này bằng std::stack.
Ví dụ:
- Với
s = "codelearn"
thìreverseString(s) = "nraeledoc"
. - Với
s = "abcd"
thìreverseString(s) = "dcba"
.
Giới thiệu stack.
Stack là một loại container adaptor, được thiết kế để hoạt động theo kiểu LIFO (Last – in first – out) (vào sau ra trước), tức là một kiểu danh sách mà việc bổ sung và loại bỏ một phần tử được thực hiển ở cuối danh sách. Vị trí cuối cùng của stack gọi là đỉnh (top) của ngăn xếp.
Stack giống như việc giáo viên kiểm tra vở bài tập của học sinh vậy, ai nộp sau cùng thì vở bài tập của người đó sẽ được giáo viên kiểm tra đầu tiên, đương nhiên người nộp vợ đầu tiên sẽ được kiểm tra cuối cùng.
Khai báo:
#include<stack>
Stack có các hàm sau:
- size : trả về kích thước hiện tại của stack. ĐPT
O(1)
. - empty : true stack nếu rỗng, và ngược lại. ĐPT
O(1)
. - push : đẩy phần tử vào stack. ĐPT
O(1).
- pop : loại bỏ phẩn tử ở đỉnh của stack. ĐPT
O(1)
. - top : truy cập tới phần tử ở đỉnh stack. ĐPT
O(1)
.
Hướng dẫn.
Code mẫu:
string reverseString(string s)
{
string res;
stack<char> st;
for (int i = 0; i < s.length(); i++){
st.push(s[i]);
}
while(st.empty() == false){
res = res + st.top();
st.pop();
}
return res;
}
Post Comment