给定一个二进制字符串和一个数字m,任务是检查该字符串是否有m个连续的1或0。
null
例如:
输入: str=“001001”,m=2 输出: 对
输入: str=“1000000001”,m=10 输出: 不
这个 方法 是通过遍历二进制字符串来计算连续的1或0。在遍历二进制字符串时,对连续出现的1或0进行计数。如果有M个连续的1或0,则返回 符合事实的 ,否则返回 错误的 .
以下是上述方法的实施情况:
C++
// Program to check if the binary string // contains m consecutive 1's or 0's #include <bits/stdc++.h> #include <stdio.h> using namespace std; // Function that checks if // the binary string contains m // consecutive 1's or 0's bool check(string s, int m) { // length of binary string int l = s.length(); // counts zeros int c1 = 0; // counts 1's int c2 = 0; for ( int i = 0; i < l; i++) { if (s[i] == '0' ) { c2 = 0; // count consecutive 0's c1++; } else { c1 = 0; // count consecutive 1's c2++; } if (c1 == m || c2 == m) return true ; } return false ; } // Drivers Code int main() { string s = "001001" ; int m = 2; // function call if (check(s, m)) cout << "YES" ; else cout << "NO" ; return 0; } |
JAVA
// Program to check if the // binary string contains // m consecutive 1's or 0's import java.io.*; class GFG { // Function that checks if // the binary string contains m // consecutive 1's or 0's static boolean check(String s, int m) { // length of binary string int l = s.length(); // counts zeros int c1 = 0 ; // counts 1's int c2 = 0 ; for ( int i = 0 ; i < l; i++) { if (s.charAt(i) == '0' ) { c2 = 0 ; // count consecutive 0's c1++; } else { c1 = 0 ; // count consecutive 1's c2++; } if (c1 == m || c2 == m) return true ; } return false ; } // Drivers Code public static void main (String[] args) { String s = "001001" ; int m = 2 ; // function call if (check(s, m)) System.out.println( "YES" ); else System.out.println( "NO" ); } } // This code is contributed by anuj_67. |
Python 3
# Program to check if the binary string # contains m consecutive 1's or 0's # Function that checks if # the binary string contains m # consecutive 1's or 0's def check(s, m): # length of binary string l = len (s); # counts zeros c1 = 0 ; # counts 1's c2 = 0 ; for i in range ( 0 , l - 1 ): if (s[i] = = '0' ): c2 = 0 ; # count consecutive 0's c1 = c1 + 1 ; else : c1 = 0 ; # count consecutive 1's c2 = c2 + 1 ; if (c1 = = m or c2 = = m): return True ; return False ; # Driver Code s = "001001" ; m = 2 ; # function call if (check(s, m)): print ( "YES" ); else : print ( "NO" ); # This code is contributed # by Shivi_Agggarwal |
C#
// Program to check if the // binary string contains // m consecutive 1's or 0's using System; class GFG { // Function that checks if // the binary string contains // m consecutive 1's or 0's static bool check( string s, int m) { // length of // binary string int l = s.Length; // counts zeros int c1 = 0; // counts 1's int c2 = 0; for ( int i = 0; i < l; i++) { if (s[i] == '0' ) { c2 = 0; // count consecutive // 0's c1++; } else { c1 = 0; // count consecutive // 1's c2++; } if (c1 == m || c2 == m) return true ; } return false ; } // Driver Code public static void Main () { String s = "001001" ; int m = 2; // function call if (check(s, m)) Console.WriteLine( "YES" ); else Console.WriteLine( "NO" ); } } // This code is contributed // by anuj_67. |
PHP
<?php // Program to check if the // binary string contains m // consecutive 1's or 0's // Function that checks if // the binary string contains // m consecutive 1's or 0's function check( $s , $m ) { // length of binary // string $l = count ( $s ); // counts zeros $c1 = 0; // counts 1's $c2 = 0; for ( $i = 0; $i <= $l ; $i ++) { if ( $s [ $i ] == '0' ) { $c2 = 0; // count consecutive // 0's $c1 ++; } else { $c1 = 0; // count consecutive 1's $c2 ++; } if ( $c1 == $m or $c2 == $m ) return true; } return false; } // Driver Code $s = "001001" ; $m = 2; // function call if (check( $s , $m )) echo "YES" ; else echo "NO" ; // This code is contributed // by anuj_67. ?> |
Javascript
<script> // Program to check if the // binary string contains // m consecutive 1's or 0's // Function that checks if // the binary string contains // m consecutive 1's or 0's function check(s, m) { // length of // binary string let l = s.length; // counts zeros let c1 = 0; // counts 1's let c2 = 0; for (let i = 0; i < l; i++) { if (s[i] == '0 ') { c2 = 0; // count consecutive // 0' s c1++; } else { c1 = 0; // count consecutive // 1's c2++; } if (c1 == m || c2 == m) return true ; } return false ; } let s = "001001" ; let m = 2; // function call if (check(s, m)) document.write( "YES" ); else document.write( "NO" ); </script> |
输出:
YES
时间复杂性: O(N),其中N是二进制字符串的长度。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END