我是靠谱客的博主 平淡荔枝,最近开发中收集的这篇文章主要介绍程序员面试金典01.01. 判定字符是否唯一,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

自己的超长代码:

class Solution {
public:
bool isUnique(string astr) {
int n=astr.length();
int a[26]={0};
for(int i=0;i<n;i++){
if(astr[i]=='a')a[0]++;
else if(astr[i]=='b')a[1]++;
else if(astr[i]=='c')a[2]++;
else if(astr[i]=='d')a[3]++;
else if(astr[i]=='e')a[4]++;
else if(astr[i]=='f')a[5]++;
else if(astr[i]=='g')a[6]++;
else if(astr[i]=='h')a[7]++;
else if(astr[i]=='i')a[8]++;
else if(astr[i]=='j')a[9]++;
else if(astr[i]=='k')a[10]++;
else if(astr[i]=='l')a[11]++;
else if(astr[i]=='m')a[12]++;
else if(astr[i]=='n')a[13]++;
else if(astr[i]=='o')a[14]++;
else if(astr[i]=='p')a[15]++;
else if(astr[i]=='q')a[16]++;
else if(astr[i]=='r')a[17]++;
else if(astr[i]=='s')a[18]++;
else if(astr[i]=='t')a[19]++;
else if(astr[i]=='u')a[20]++;
else if(astr[i]=='v')a[21]++;
else if(astr[i]=='w')a[22]++;
else if(astr[i]=='x')a[23]++;
else if(astr[i]=='y')a[24]++;
else if(astr[i]=='z')a[25]++;
}
for(int i=0;i<26;i++){
if(a[i]>1)return false;
}
return true;
}
};

改进之后代码:

class Solution {
public:
bool isUnique(string astr) {
int n=astr.length();
int a[26]={0};
for(int i=0;i<n;i++){
int x=astr[i]-'a';
a[x]++;
if(a[x]>=2)return false;
}
return true;
}
};

大佬的代码:

class Solution {
public:
bool isUnique(string astr) {
for(int i=0; i<astr.size();i++){
if(astr.find(astr[i])!=astr.rfind(astr[i])){
return false;
}
}
return true;
}
};

不同的是find是正向搜查,而rfind是逆向搜查,但是最终两个函数返回的位置均是字符出现的正向位置,若有重复字符则rfind()返回的是逆向查找到的字符在正向的位置;

最后

以上就是平淡荔枝为你收集整理的程序员面试金典01.01. 判定字符是否唯一的全部内容,希望文章能够帮你解决程序员面试金典01.01. 判定字符是否唯一所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部