不在意时间就双层循环一个一个查找,不在意空间就用一个新数组对各个出现的字符计数,并检查,若有大于1的,则有重复字符,可判结。
#include<stdbool.h>
bool isUnique(char* str ) {
  int len = strlen(str);
  if(len <= 1)
     return true;
  int i = 0, j = 0;
  for(i = 0; i < len; i++){  //外层循环的字符是基础,就是问后面有没有和这个字符重复的
      for(j = i+1; j<len; j++){ //内层循环是变数,就是问这个字符是不是和基础字符一样
          if(str[i] == str[j])
              return false;  //一旦有重复的就收网
      }
  }
  return true;
}
计数法:这里用长度为256的数组计数,如果只有大写或小写字母,可用长度为26的数组计数更省空间。
#include<stdbool.h>
bool isUnique(char* str ) {
  int len = strlen(str);
  if(len <= 1)
     return true;
  int i = 0, j = 0;
  int cnt[256] = {0};
  for(i = 0; i < len; i++){
      cnt[str[i]]++;
      if(cnt[str[i]]> 1)
          return false;
      }
  return true;
}