0965303260
TP. Hồ Chí Minh

[C]. Xâu đối xứng

Xâu đối xứng là xâu mà khi ta đọc từ trái qua phải hay từ phải qua trái có nội dung giống nhau

NỘI DUNG : 

  • Kiểm tra xâu đối xứng
  • Lật ngược xâu ký tự

xau doi xung

1. Kiểm tra xâu đối xứng

Để kiểm tra xâu đối xứng ta chỉ cần xét các cặp ký tự đối xứng nhau ở 2 bên bằng cách dùng cặp chỉ số left, right

Code 1 : 

#include "stdio.h"
#include "ctype.h"
#include "string.h"

int doixung1(char c[]){
    int l = 0, r = strlen(c) - 1;
    while(l <= r){
        if(c[l] != c[r]){
            return 0;
        }
        ++l; --r;
    }
    return 1;
}

int main(){
    char s[1000] = "28techhcet82";
    if(doixung1(s)){
        printf("%s doi xung !\n", s);
    }
    else{
        printf("%s khong doi xung !\n", s);
    }
    return 0;
}

Output : 

28techhcet82 doi xung !

Cách thứ 2 là bạn có thể so sánh kí tự ở chỉ số i với kí tự đối xứng với nó ở chỉ số n - i - 1 với n là số lượng ký tự trong xâu.

Code 2: 

#include "stdio.h"
#include "ctype.h"
#include "string.h"

int doixung2(char c[]){
    int n = strlen(c);
    for(int i = 0; i < n / 2; i++){
        if(c[i] != c[n - i - 1]){
            return 0;
        }
    }
    return 1;
}

int main(){
    char s[1000] = "28techhcet82";
    if(doixung2(s)){
        printf("%s doi xung !\n", s);
    }
    else{
        printf("%s khong doi xung !\n", s);
    }
    return 0;
}

Output : 

28techhcet82 doi xung !


2. Lật ngược xâu ký tự

Để lật ngược một xâu ký tự trong C bạn làm tương tự cách kiểm tra xâu đối xứng

Trong C có hàm strrev() được dùng để lật ngược một xâu nhưng không phải là hàm chuẩn nên không thể dùng ở mọi trình biên dịch C.

Bạn có thể tự cài đặt hàm này vì cài đặt cũng nhanh và dễ dàng

Code : 

#include "stdio.h"
#include "ctype.h"
#include "string.h"

char *my_strrev(char *s){
    int n = strlen(s);
    for(int i = 0; i < n / 2; i++){
        char c = s[i];
        s[i] = s[n - i - 1];
        s[n - i - 1] = c;
    }
    return s;
}

int main(){
    char s[1000] = "28tech";
    printf("%s\n", my_strrev(s));
    printf("%s\n", s);
    return 0;
}

Output : 

hcet82
hcet82


Video xâu đối xứng : 

IYU5Eds7g6w