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

Kiểm tra chuỗi đối xứng trong C dùng con trỏ


Giả sử có chuỗi s. Kiểm tra chuỗi có phải palindrome hay không. Giải quyết bằng con trỏ trong C.

Nếu đầu vào s = "racecar", đầu ra sẽ là True.

Các bước giải:

  • length := độ dài chuỗi
  • forward := trỏ đến ký tự đầu chuỗi
  • reverse := trỏ đến ký tự cuối chuỗi
  • while vị trí reverse >= vị trí forward, làm:
    • nếu ký tự reverse trùng ký tự forward, thì tăng forward, giảm reverse 1 đơn vị
    • ngược lại thoát vòng lặp
  • nếu vị trí forward > reverse, trả về True
  • trả về False

Xem triển khai để hiểu rõ hơn:

Ví dụ

#include <stdio.h>
#include <string.h>
int solve(char *string) {
    int length;
    char *forward, *reverse;
    length = strlen(string);
    forward = string;
    reverse = forward + length - 1;
    for (forward = string; reverse >= forward;) {
        if (*reverse == *forward) {
            reverse--;
            forward++;
        } else
            break;
    }
    if (forward > reverse)
        return 1;
    else
        return 0;
}
int main() {
    char string[] = "racecar";
    printf("%d", solve(string));
}

Đầu vào

"racecar"

Đầu ra

1