这些东西就是套路
1.实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
示例 1:
输入: s = "leetcode"
输出: false
示例 2:
输入: s = "abc"
输出: true
限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分
总结套路:标准答案是位运算,这块不懂,仔细研究了下还挺意思。
位预算:&和|两种,&就是两个数都是1,结果才的1。 |就是只要有一个是1,就是1。
左移位预算: 15<<2 表示将15转化为二进制,然后左移两位,右侧末尾全部补0。
典型应用场景:位运算主要是用来表示一组具有开关状态的事物,开关指的就是true/false,开或者关等。
比如5个灯泡,00000
第一个灯泡是d1,00001,2
第二个是d2,00010,4
一组灯泡的状态是一个变化的值,比如10110
如果想知道第三个灯泡亮不亮,可以用00100跟他做&运算。
memory应该是 00000000000000000000000000000
其他两种思路是
1.查找字符,返回的结果不是自己所在的位置,就是不重复。
从第一个字符开始,查找一个字符 astr.lastIndexOf(),是此位置就不重复,否则就重复。
for(i=0;i<astr.length();i++)
astr.lastIndexOf(astr.charAt(i) )!=i
return false
return true;
2.利用set集合的不重复特性