Rate this post

Trong C++, có nhiều cách để đảo ngược chuỗi, một trong những cách phổ biến nhất là sử dụng vòng lặp và các toán tử chỉ mục.

Các bài viết liên quan:

Ví dụ:

#include <iostream>
using namespace std;

void reverseString(string& str)
{
    int n = str.length();
    for (int i = 0; i < n / 2; i++)
        swap(str[i], str[n - i - 1]);
}

int main()
{
    string str = "hello world";
    reverseString(str);
    cout << str << endl;
    return 0;
}

Trong ví dụ trên, chúng ta đã sử dụng vòng lặp for và toán tử chỉ mục để đảo ngược chuỗi “hello world”. Kết quả in ra màn hình là “dlrow olleh”.

Có thể sử dụng các thuật toán khác như stack, đệ quy, sử dụng hàm reverse() của thư viện algorithm hoặc sử dụng các phép toán bit để đảo ngược chuỗi. Tùy thuộc vào yêu cầu và mục đích sử dụng mà chọn thuật toán phù hợp nhất.

Có một số cách khác để đảo ngược chuỗi trong C++:

  1. Sử dụng hàm reverse() của thư viện <algorithm> : hàm này sẽ đảo ngược chuỗi trong O(n) thời gian.
#include <algorithm>
#include <iostream>
using namespace std;

int main() {
    string str = "hello world";
    reverse(str.begin(), str.end());
    cout << str << endl;
    return 0;
}
  1. Sử dụng stack: ta có thể sử dụng stack để lưu từng ký tự của chuỗi và sau đó lấy ra từng ký tự để tạo chuỗi đảo ngược.
#include <iostream>
#include <stack>
using namespace std;

void reverseString(string& str) {
    stack<char> s;
    for (int i = 0; i < str.length(); i++) {
        s.push(str[i]);
    }
    int j = 0;
    while (!s.empty()) {
        str[j++] = s.top();
        s.pop();
    }
}

int main() {
    string str = "hello world";
    reverseString(str);
    cout << str << endl;
    return 0;
}
  1. Sử dụng đệ quy: ta có thể sử dụng đệ quy để đảo ngược chuỗi

Để sử dụng đệ quy để đảo ngược chuỗi, chúng ta có thể thiết kế một hàm đệ quy như sau:

void reverseString(string& str, int start, int end)
{
    if (start >= end) return;
    swap(str[start], str[end]);
    reverseString(str, start + 1, end - 1);
}

Hàm trên sử dụng đệ quy để đảo ngược chuỗi. Nó sẽ hoán đổi ký tự tại vị trí start với ký tự tại vị trí end, sau đó gọi đệ quy để hoán đổi ký tự tại vị trí start + 1 và end – 1. Quá trình này sẽ tiếp tục cho đến khi start >= end.

Để sử dụng hàm trên, chúng ta có thể gọi nó trong hàm main() với chuỗi cần đảo ngược và vị trí bắt đầu và kết thúc của chuỗi.

int main() {
    string str = "hello world";
    reverseString(str, 0, str.length() - 1);
    cout << str << endl;
    return 0;
}

Lưu ý: Cách sử dụng đệ quy này có thể tốn nhiều bộ nhớ hơn cách sử dụng vòng lặp và các toán tử chỉ mục.

  1. sử dụng toán bit để đảo chuỗi

tiếp theo, chúng ta có thể sử dụng các phép toán bit để đảo ngược chuỗi. Ví dụ như sử dụng toán tử xor để hoán đổi hai ký tự trong chuỗi.

void reverseString(string& str) {
    int n = str.length();
    for (int i = 0; i < n / 2; i++) {
        str[i] ^= str[n - i - 1];
        str[n - i - 1] ^= str[i];
        str[i] ^= str[n - i - 1];
    }
}

Trong tổng quát, chúng ta có nhiều cách để đảo ngược chuỗi trong C++, tùy thuộc vào yêu cầu và mục đích sử dụng mà chọn cách thích hợp nhất.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now