zoukankan      html  css  js  c++  java
  • SZU:A26 Anagram

    Judge Info

    • Memory Limit: 32768KB
    • Case Time Limit: 10000MS
    • Time Limit: 10000MS
    • Judger: Normal

    Description

    An anagram is formed by rearranging the letters of a word. You are given a string, please find out if it is an anagram of a word or not. No word will have have more than 50 characters.

    Input

    The input will consist of a word on one line. The following line contains a number, n (1 leq n leq 30,000), of strings to be tested.

    Output

    For each test string, if the test string is identical to the source string, output 'IDENTICAL', if it is an anagram, output 'ANAGRAM' otherwise output 'NOT AN ANAGRAM', in a single line.

    Sample Input

    cares
    5
    scare
    races
    cares
    another
    acres
    

    Sample Output

    ANAGRAM
    ANAGRAM
    IDENTICAL
    NOT AN ANAGRAM
    ANAGRAM

    解题思路:字符串数组排序,但是我的方法并不好,只是勉强解出来而已。不过学会了使用qsort函数。

     1 #include <stdio.h>
     2 #include <string.h>
     3 char A[52];
     4 char B[52];
     5 char C[52];
     6 
     7 void swap(char *a,char *b){
     8     char t;
     9     t=*a;
    10     *a=*b;
    11     *b=t;
    12 }
    13 
    14 int main() {
    15     scanf("%s",A);
    16     int n,flag,i,j;
    17     scanf("%d",&n);
    18     for (i=0;i<strlen(A);++i){
    19         C[i]=A[i];
    20     } 
    21     while (n--) {
    22 
    23         scanf("%s",B);
    24         flag=1;
    25         for (i=0;i<strlen(A);++i) {
    26             if(A[i]!=B[i])
    27                 flag=0;
    28         }
    29         if(flag==1){printf("IDENTICAL
    "); continue;}
    30         for (i=0;i<strlen(C)-1;++i) {
    31             for (j=i+1;j<strlen(C);++j) {
    32                 if(B[i]>B[j])
    33                     swap(&B[i],&B[j]);
    34                 if(C[i]>C[j])
    35                     swap(&C[i],&C[j]);
    36             }
    37         }
    38         
    39         for (i=0;i<strlen(A);++i) {
    40             if(C[i]!=B[i])
    41                 flag=2;
    42         }
    43         if(flag==0){printf("ANAGRAM
    "); continue;}
    44         else printf("NOT AN ANAGRAM
    ");
    45     }
    46 }

    大神解法:

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<string.h>
     4  
     5 char S[55];
     6  
     7 int cmp(const void *a,const void *b)
     8 {
     9     return *(char *)a-*(char *)b;
    10 }
    11  
    12 int main()
    13 {
    14     int n,i,len1,len2;
    15     char str[55],temp[55];
    16     scanf("%s",S);
    17     strcpy(temp,S);
    18     len1=strlen(S);
    19     qsort(S,len1,sizeof(char),cmp);
    20     scanf("%d",&n);
    21     for(i=0;i<n;i++)
    22     {
    23         memset(str,0,sizeof(str));
    24         scanf("%s",str);
    25         len2=strlen(str);
    26         if(len2!=len1)
    27         {
    28             printf("NOT AN ANAGRAM
    ");
    29             continue;
    30         }
    31         if(0==strcmp(str,temp))
    32         {
    33             printf("IDENTICAL
    ");
    34             continue;
    35         }
    36         else
    37         {
    38             qsort(str,len2,sizeof(char),cmp);
    39             if(0==strcmp(S,str))
    40                 printf("ANAGRAM
    ");
    41             else
    42                 printf("NOT AN ANAGRAM
    ");
    43         }
    44     }
    45     return 0;
    46 }
  • 相关阅读:
    就没有我遇不到的报错!java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/filter/Filter
    【HBase】通过Bulkload批量加载数据到Hbase表中
    【HBase】HBase和Hue的整合
    【HBase】协处理器是什么?又能干什么?怎么用?
    【HBase】带你了解一哈HBase的各种预分区
    【HBase】快速了解上手rowKey的设计技巧
    【HBase】HBase和Sqoop整合
    【HBase】快速搞定HBase与Hive的对比、整合
    hive元数据报错?试了很多方法都没辙?也许你漏了这一步
    【HBase】HBase与MapReduce集成——从HDFS的文件读取数据到HBase
  • 原文地址:https://www.cnblogs.com/firstrate/p/3189446.html
Copyright © 2011-2022 走看看