Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Đảo ngược chuỗi tại chỗ (in place) trong C/C++


Phần này xem cách đảo ngược chuỗi tại chỗ (không dùng bộ nhớ khác). Trong C++ có std::string. C dùng mảng ký tự. Chương trình dùng mảng ký tự nhận chuỗi, rồi đảo ngược.

Đầu vào: Chuỗi "This is a string"
Đầu ra: Chuỗi đảo "gnirts a si sihT"

Thuật toán

reverse_string(str)

Đầu vào - Chuỗi

Đầu ra - Chuỗi đảo ngược.

len := độ dài chuỗi
i := 0 và j := (len-1)
khi i < j, làm
    hoán đổi ký tự vị trí i và j
    i := i + 1
    j := j - 1
kết thúc

Ví dụ mã

#include <iostream>
#include<cstring>
using namespace std;

void reverse(char s[]) {
    int len = strlen(s); // lấy độ dài chuỗi
    int i, j;
    for(i = 0, j = len - 1; i < j; i++, j--) {
        swap(s[i], s[j]);
    }
}

int main() {
    char s[20] = "This is a string";
    cout << "Chuỗi gốc: " << s << endl;
    reverse(s);
    cout << "Chuỗi đảo: " << s << endl;
}

Kết quả

Chuỗi gốc: This is a string
Chuỗi đảo: gnirts a si sihT