Summer test

在这里插入图片描述


目录

  • 第一个只出现一次的字符
  • 判定字符是否唯一
  • 判定是否互为字符重排
  • 回文排列
  • 单词缩写

第一个只出现一次的字符

原题链接:第一个只出现一次的字符

int FirstNotRepeatingChar(char* str ) {
     int arr[200] = {0};
     int len = strlen(str);
     int i=0;
     for(i=0;i<len;i++)
     {
        arr[str[i]]++;
     }
      for(i=0;i<len;i++)
     {
        if(arr[str[i]]==1)
        return i;
     }
   return -1;
}

判定字符是否唯一

原题链接:判定字符是否唯一

bool isUnique(char* astr){
   int arr[200] = {0};
     int len = strlen(astr);
     int i=0;
     for(i=0;i<len;i++)
     {
        arr[astr[i]]++;
     }
      for(i=0;i<len;i++)
     {
        if(arr[astr[i]]>1)
        return false;
     }
   return true;
}

判定是否互为字符重排

原题链接:判定是否互为字符重排

int compare(const void* s1,const void* s2)
{
    return *(char*)s1-*(char*)s2;
}

bool CheckPermutation(char* s1, char* s2){
    if(strlen(s1)!=strlen(s2))
    return false;
    //排序
   qsort(s1,strlen(s1),sizeof(s1[0]),compare);
   qsort(s2,strlen(s2),sizeof(s2[0]),compare);
    if(strcmp(s1,s2)!=0)
    return false;
    else
     return true;
}

回文排列

原题链接:回文排列

bool canPermutePalindrome(char* s){
     int arr[1000]={0};
     char str[128]={0};
     int len = strlen(s);
     int i=0,j=0,count = 0;
     for(i=0;i<len;i++)
     {
         arr[s[i]]++;
     }
        for(i=0;i<len;i++)
     {
         if(strchr(str,s[i]))
         continue;
          if(arr[s[i]]%2==1) //奇数
         {
              count++;
              str[j++] = s[i];
         }
     }
     
     if(count>1)
     return false;
     else
     return true;
}

单词缩写

原题链接:单词缩写

#include 
#include 
int main() {
    int n = 0;
    char str[120][120] ={0};
    scanf("%d",&n);
    int i=0;
    for(i=0 ;i<n;i++)
    {
        scanf("%s",str[i]);
    }
     for(i=0 ;i<n;i++)
    {
        int len = strlen(str[i]);
        if(len>=10)
         printf("%c%d%c\n",str[i][0],len-2,str[i][len-1]);
         else
        printf("%s\n",str[i]);
    }
    return 0;
}

你可能感兴趣的:(c语言)