Leetcode刷题100天—1980. 找出不同的二进制字符串(字符串)—day19

前言:

作者:神的孩子在歌唱

大家好,我叫运智

image-20210826155628874

1980. 找出不同的二进制字符串

难度中等4收藏分享切换为英文接收动态反馈

给你一个字符串数组 nums ,该数组由 n互不相同 的二进制字符串组成,且每个字符串长度都是 n 。请你找出并返回一个长度为 n没有出现nums 中的二进制字符串*。*如果存在多种答案,只需返回 任意一个 即可。

示例 1:

输入:nums = ["01","10"]
输出:"11"
解释:"11" 没有出现在 nums 中。"00" 也是正确答案。

示例 2:

输入:nums = ["00","01"]
输出:"11"
解释:"11" 没有出现在 nums 中。"10" 也是正确答案。

示例 3:

输入:nums = ["111","011","001"]
输出:"101"
解释:"101" 没有出现在 nums 中。"000""010""100""110" 也是正确答案。

提示:

  • n == nums.length
  • 1 <= n <= 16
  • nums[i].length == n
  • nums[i]'0''1'
package 水题;

import java.util.HashSet;
import java.util.Set;
/*
*https://leetcode-cn.com/problems/find-unique-binary-string/
*/

public class _1980_找出不同的二进制字符串 {
//	通过哈希表来判断
    public String findDifferentBinaryString(String[] nums) {
//    	先判断n的长度
    	int len=nums[0].length();
    	Set<String> map=new HashSet<>();
    	for(String num:nums) {
    		map.add(num);
    	}
//    	字符由0和1组成,所以我们遍历判断他是否在map中
    	
//    	遍历比nums里面的数更多的一个数就够了
    	for(int i=0;i<=nums.length;i++) {
//    		设置保存字符串,在 StringBuilder 上的主要操作是 append 和 insert 方法。
    		StringBuilder str=new StringBuilder();
//    		通过for循环组成二进制
    		for(int j=0;j<len;j++) {
//    			通过无符号右移运算符>>>和与&符号(是1就是1,否则都为0)
    			str.append( i>>> j&1);
//    			第一次遍历i右移j位
    		}
//    		最后逆转,比如这样输出顺序就是00,01,10,这里没有11,不过没关系,
    		//题目是nums[i].length == n,所以最多只要三个就能判断
    		str.reverse();
    		if(!map.contains(str.toString())) {
    			return str.toString();
    		}
    	}
    	return "";
    }
}

本人csdn博客:https://blog.csdn.net/weixin_46654114

转载说明:跟我说明,务必注明来源,附带本人博客连接。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神的孩子都在歌唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值