题解 | #判断字符是否唯一#

判断字符是否唯一

http://www.nowcoder.com/practice/fb08c63e2c4f4f7dbf41086e46044211

不在意时间就双层循环一个一个查找,不在意空间就用一个新数组对各个出现的字符计数,并检查,若有大于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;
}





全部评论

相关推荐

牛至超人:哈工大已经很棒了,不需要加括号了,然后咋没有实习经历呢?火速趁寒假整一段实习,导师不让就狠狠肘击
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务