Chương trình anagram trong C



Bài tập C: kiểm tra hai chuỗi có phải là anagram không

Anagram là thuật ngữ để chỉ hai chuỗi có số ký tự và các ký tự giống nhau, nhưng thứ tự của các ký tự trong chuỗi có thể khác nhau.

Ví dụ: hai chuỗi listensliten là anagram.

Để giải bài tập C này, trước hết bạn cần so sánh độ dài của hai chuỗi (sử dụng hàm strlen() để tìm độ dài). Tiếp đó, bạn sắp xếp hai chuỗi theo thứ tự chữ cái (bạn có thể tham khảo cách sắp xếp ở chương Sắp xếp các ký tự của chuỗi trong C), và cuối cùng sử dụng vòng lặp để duyệt qua hai chuỗi đã sắp xếp và so sánh xem từng ký tự của hai chuỗi này có giống nhau không.

Chương trình C

Dưới đây là chương trình C để giải bài tập kiểm tra anagram trong C:

#include 
#include int main (void) {
   char s1[] = "vietjack";
   char s2[] = "jackviet";   char temp;   int i, j;
   int n  = strlen(s1);
   int n1 = strlen(s2);   // neu hai chuoi co do dai khac nhau, thi chung khong phai la anagram   if( n != n1) {    
      printf("Chuoi %s va chuoi %s khong phai la anagram !!! \n", s1, s2);
      return 0;
   }
   
   // dau tien sap xep ca hai chuoi   for (i = 0; i < n-1; i++) {
      for (j = i+1; j < n; j++) {
         if (s1[i] > s1[j]) {
            temp  = s1[i];
            s1[i] = s1[j];
            s1[j] = temp;
         }
         if (s2[i] > s2[j]) {
            temp  = s2[i];
            s2[i] = s2[j];
            s2[j] = temp;
         }
      }
   }   // sau khi sap xep xong, so sanh tung ky tu cua hai chuoi   for(i = 0; i

Biên dịch chương trình C trên sẽ cho kết quả:

Chương trình anagram trong C
bai-tap-chuoi-trong-c.jsp