Leetcode 面试题 01.01. 判定字符是否唯一
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
示例 1:
输入: s = "leetcode"
输出: false
示例 2:
输入: s = "abc"
输出: true
限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。
最开始想的是字符可能范围是0~255,毕竟给的字符串长度小于100,如果只有小写字母那还给100干嘛。
几种可行的方法:
1.排序
2.用set记录出现过的字符
3.用一个vector(255,0)来记录
4.全部加入set,比较和原数组的大小
5.下面代码的方法,利用一个32位int做记录,当然这是默认字符串中只有小写字母的前提下:
1 class Solution { 2 public: 3 bool isUnique(string astr) { 4 if(astr.size()<2){return true;} 5 int p=0; 6 for(int i=0;i<astr.size();++i){ 7 if((1<<(astr[i]-'a'))&p){ 8 return false; 9 } 10 p|=(1<<(astr[i]-'a')); 11 } 12 return true; 13 } 14 };
进击的小🐴农