目录
只出现一次的数字
a异或a等于0
a异或0等于a
class Solution {
public int singleNumber(int[] nums) {
int single = 0;
for (int i=0;i<nums.length;i++) {
single ^= nums[i];
}
return single;
}
}
HashMap方法统计数据出现的个数
class Solution {
public int singleNumber(int[] nums) {
HashMap<Integer,Integer> map=new HashMap<>();
for(int i=0;i<nums.length;i++){
if(map.get(nums[i])==null){//get得到nums[i]出现得次数
map.put(nums[i],1);//put一次
}else{
int val=map.get(nums[i]);
map.put(nums[i],val+1);//put val+1次
}
}
for(int i=0;i<nums.length;i++){
int count=map.get(nums[i]);
if(count==1){
return nums[i];
}
}
return -1;
}
}
HashSet去掉重复的数据
class Solution {
public int singleNumber(int[] nums) {
HashSet<Integer> set=new HashSet<>();
for(int i=0;i<nums.length;i++){
if(set.contains (nums[i])){
set.remove (nums[i]);
}else{
set.add (nums[i]);
}
}
for(int i=0;i<nums.length;i++){
if(set.contains(nums[i])){
return nums[i];
}
}
return -1;
}
}
坏键盘
输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、 以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。
public class Main{
public static void func(String enter,String get) {
HashSet<Character> set1 = new HashSet<>();
for (char ch : get.toUpperCase().toCharArray()) {
set1.add(ch);//我们得到的键盘
}
HashSet<Character> setBroken = new HashSet<>();
for (char ch :enter.toUpperCase().toCharArray()) {//我们输入的键盘
if(!set1.contains(ch) && !setBroken.contains(ch)) {//去掉坏键盘中重复的数据
System.out.print(ch);
setBroken.add(ch);
}
}
}