Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、问题描述
实现一个算法,确定一个字符串 s
的所有字符是否全都不同。
题目链接:判断字符是否唯一。
二、题目要求
样例 1
输入: s = "leetcode"
输出: false
复制代码
样例 2
输入: s = "abc"
输出: true
复制代码
考察
1.字符串应用,位运算中等题型
2.建议用时15~35min
复制代码
三、问题分析
本题是位运算的第5题,没了解过位运算相关知识点可以看这一篇文章,讲解比较详细:
1.字符串
一开始,我看这一题属实没想到字符如何与位运算的相关知识点结合起来。
我就按照平常的思路解决,主要运用了C++标准模板库的String类函数,没有了解过String类函数可以看这一篇:算法题每日一练—第22天:猜字母。
要判断是否唯一,只要进行下述两步操作:
1.字符串中单个字母存入k
2.字符串寻找是否包含除了当前位置的k
复制代码
2.位运算
就像这道题后面的题解一样,位运算对于这一题来说,显得不是很有优势。代码也显得难懂,所以位运算的代码我就不写了,躺平了。
四、编码实现
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)!=-1&&astr.find(k)!=i)//判断还有没有重复的元素
{
return false;//返回 错误
}
}
return true;//返回 正确
}
};
复制代码
五、测试结果
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END