算法题每日一练—第50天:判断字符是否唯一

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、问题描述

实现一个算法,确定一个字符串 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

四、编码实现

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;//返回 正确

    }
};
复制代码

五、测试结果

2.png

1.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享