实现一个算法,确定一个字符串s的所有字符是否完全都不同。
事例一:
输入:s=“leetcode”
输出:false
事例二:
输入:s=“abc”
输出:true
方法一:暴力解法(新手容易想到,但不建议使用)
bool isUnique(char* astr)
{
int len=strlen (astr);
for (int i=0;i<len;i++) {
for (int j=i+1;j<len;j++) {
if (astr[i]==astr[j]) {
return false;
}
}
}
return true;
}
时间复杂度为O(n2)
空间复杂度为O(1)
方法二:用数组做set
set:set翻译为集合,是一个内部自动有序且不含重复元素的容器
需要的头文件#inclde<set>
# include <stdio.h>
# include <string.h># include <stdlib.h>bool isUnique(char* astr) {int n = strlen(astr);if (n > 26){return false;}int cnt[26];memset(cnt, 0, sizeof(int) * 26);for (int i = 0; i < n; i++){int ind = astr[i] - 'a';if (cnt[ind] != 0){return false;}cnt[ind]++;}return true;}int main(){char astr[26] = "leetcode";isUnique(astr);if (!isUnique(astr)){printf("%s\n", astr);}return 0;}数组可以通过下标访问,时间复杂度为O(1)
面试题01.01.判断字符是否唯一
最新推荐文章于 2023-11-28 22:32:14 发布