Lc5409_檢查一個字符串是否包含所有長度爲 K 的二進制子串

package com.example.demo; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** * 5409. 檢查一個字符串是否包含所有長度爲 K 的二進制子串 顯示英文描述 * 通過的用戶數 844 * 嘗試過的用戶數 1093 * 用戶總通過次數 851 * 用戶總提交次數 1950 * 題目難度 Medium * 給你一個二進制字符串 s 和一個整數 k 。 * <p> * 如果所有長度爲 k 的二進制字符串都是 s 的子串,請返回 True ,否則請返回 False 。 * <p> * <p> * <p> * 示例 1: * <p> * 輸入:s = "00110110", k = 2 * 輸出:true * 解釋:長度爲 2 的二進制串包括 "00","01","10" 和 "11"。它們分別是 s 中下標爲 0,1,3,2 開始的長度爲 2 的子串。 * 示例 2: * <p> * 輸入:s = "00110", k = 2 * 輸出:true * 示例 3: * <p> * 輸入:s = "0110", k = 1 * 輸出:true * 解釋:長度爲 1 的二進制串包括 "0" 和 "1",顯然它們都是 s 的子串。 * 示例 4: * <p> * 輸入:s = "0110", k = 2 * 輸出:false * 解釋:長度爲 2 的二進制串 "00" 沒有出現在 s 中。 * 示例 5: * <p> * 輸入:s = "0000000001011100", k = 4 * 輸出:false * <p> * <p> * 提示: * <p> * 1 <= s.length <= 5 * 10^5 * s 中只含 0 和 1 。 * 1 <= k <= 20 */ public class Lc5409 { //比較位字符串的種類和k爲二進制數字的個數 //substring 是從start 到end-1 public static boolean hasAllCodes(String s, int k) { Set<String> sets = new HashSet<String>(); for(int i = 0 ; i<= s.length()-k; i++){ sets.add(s.substring(i,i+k)); } return sets.size() == (int)Math.pow(2,k); } // // public static List<String> allBinaryString(int n) { // List<String> res = new ArrayList<>(); // int maxBinaray = 0; // for (int i = 0; i < n; i++) { // maxBinaray += Math.pow(2, i); // } // for (int i = maxBinaray - 1; i >= 0; i--) { // String s = Integer.toBinaryString(i); // while (s.length() < n) { // s = "0" + s; // } // res.add(s); // } // return res; // } public static void main(String[] args) { // String s = "011101100101110101101000011111101011111101110100111100010000010110010010011100110001110010101101011010010001101111000111110000001010100101111001111010110001111011001110100010001111000111010001111100101011100001001011101100010101010110001011110101001101001001111101000100011101110100100100101101110000000110001011100100111111001000100100010011001000101101100010010010001111010111010011110111110001010100000110000111010110001100100110111000111010111000010100100100101011001111010110010101110101000011011101000110001001100111100011000100110010101100001111000100101001111001100001010100100100110100101100111000110010110101010110010110001111010110101111011011100111001010101001011000101101110100001110011110001011000011100011111001110011111101110001110010000111010011110001011010100101110010110110100011111011110010100011111000000001011100110000010101110110111"; // int k = 7; String s = "00110"; int k=2; System.out.println(hasAllCodes(s, k)); } }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章