/**
* Author:SunLala
* Date: 2022/5/21
* 功能描述:()
*/
public class Test17 {
public static void main(String[] args) {
Test17 a = new Test17();
System.out.println(a.getUniqueStr("abcdcd"));
}
public String getUniqueStr(String s){
if(s == null || s.length() == 0){
return "";
}
int k = 0;
for (int i = 0; i < s.length(); i++) {
k = k | 1 << (s.charAt(i)-'a') ;
}
String ans = "";
for (int i = 0; i < 26 ; i++) {
if((k & (1 << i)) != 0){
ans += (char) (i+'a');
}
}
return ans;
}
}
参考文档:位运算在判断重复时候的运用_孤竹彧的博客-CSDN博客_位运算判断是否重复
总结:刚开始用脑子干巴巴想有点难以理解第二个循环,后来debug走了一遍理解了
第一层循环时判断哪个a符出现过
第二层循环26个字母如果哪个位置有,res字符串加1,所以重复的不会记上去。