一、问题描述

实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

题目链接:判断字符是否唯一

二、题目要求

样例 1

输入: s = "leetcode"
输出: false 

样例 2

输入: s = "abc"
输出: true

考察

1.字符串应用,位运算中等题型
2.建议用时15~35min

三、问题分析

本题是位运算的第5题,没了解过位运算相关知识点可以看这一篇文章,讲解比较详细:

算法题每日一练---第45天:位运算

1.字符串

一开始,我看这一题属实没想到字符如何与位运算的相关知识点结合起来。

我就按照平常的思路解决,主要运用了C++标准模板库的String类函数,没有了解过String类函数可以看这一篇:算法题每日一练---第22天:猜字母

要判断是否唯一,只要进行下述两步操作:

1.字符串中单个字母存入k
2.字符串寻找是否包含除了当前位置的k

2.位运算

3.png

就像这道题后面的题解一样,位运算对于这一题来说,显得不是很有优势。代码也显得难懂,所以位运算的代码我就不写了,躺平了。

4.png

四、编码实现

```c++
class Solution {
public:
bool isUnique(string astr) {
string k;//中间变量k
int i,n=astr.size();//初始化定义
for(i=0;i<n;i++)//for循环
{
k=astr[i];//赋值
if(astr.find(k)==astr.rfind(k))//判断还有没有重复的元素
{
return false;//返回 错误
}
}
return true;//返回 正确

}

};


## 五、测试结果

![2.png](https://s4.51cto.com/images/blog/202205/16100928_6281b2586ff9e97264.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)

![1.png](https://s4.51cto.com/images/blog/202205/16100928_6281b2584c12639871.png?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)