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 :