Check whether the binary equivalent of a number ends with given string or not
Given a positive integer N, the task is to check whether the binary equivalent of that integer ends with the given string str or not.
Print “Yes” if it ends in “str”. Otherwise, Print “No”.
Examples:
Input: N = 23, str = “111”
Output: Yes
Explanation:
Binary of 23 = 10111, which ends with “111”
Input: N = 5, str = “111”
Output: No
Approach: The idea is to find the Binary Equivalent of N and check if str is a Suffix of its Binary Equivalent.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
bool isSuffix(string s1, string s2)
{
int n1 = s1.length();
int n2 = s2.length();
if (n1 > n2)
return false ;
for ( int i = 0; i < n1; i++)
if (s1[n1 - i - 1] != s2[n2 - i - 1])
return false ;
return true ;
}
bool CheckBinaryEquivalent( int N, string str)
{
int B_Number = 0;
int cnt = 0;
while (N != 0) {
int rem = N % 2;
int c = pow (10, cnt);
B_Number += rem * c;
N /= 2;
cnt++;
}
string bin = to_string(B_Number);
return isSuffix(str, bin);
}
int main()
{
int N = 23;
string str = "111" ;
if (CheckBinaryEquivalent(N, str))
cout << "Yes" ;
else
cout << "No" ;
return 0;
}
|
Java
class GFG{
static boolean isSuffix(String s1, String s2)
{
int n1 = s1.length(),
n2 = s2.length();
if (n1 > n2)
return false ;
for ( int i = 0 ; i < n1; i++)
if (s1.charAt(n1 - i - 1 ) !=
s2.charAt(n2 - i - 1 ))
return false ;
return true ;
}
static boolean CheckBinaryEquivalent( int N,
String str)
{
int B_Number = 0 ;
int cnt = 0 ;
while (N != 0 )
{
int rem = N % 2 ;
int c = ( int )Math.pow( 10 , cnt);
B_Number += rem * c;
N /= 2 ;
cnt++;
}
String bin = Integer.toString(B_Number);
return isSuffix(str, bin);
}
public static void main(String[] args)
{
int N = 23 ;
String str = "111" ;
if (CheckBinaryEquivalent(N, str))
System.out.print( "Yes\n" );
else
System.out.print( "No\n" );
}
}
|
Python3
def isSuffix(s1, s2):
n1 = len (s1)
n2 = len (s2)
if (n1 > n2):
return False
for i in range (n1):
if (s1[n1 - i - 1 ] ! =
s2[n2 - i - 1 ]):
return False ;
return True ;
def CheckBinaryEquivalent(N, s):
B_Number = 0 ;
cnt = 0 ;
while (N ! = 0 ):
rem = N % 2 ;
c = pow ( 10 , cnt);
B_Number + = rem * c;
N / / = 2 ;
cnt + = 1 ;
bin = str (B_Number);
return isSuffix(s, bin );
if __name__ = = "__main__" :
N = 23 ;
s = "111" ;
if (CheckBinaryEquivalent(N, s)):
print ( "Yes" )
else :
print ( "No" )
|
C#
using System;
using System.Collections;
class GFG{
static bool isSuffix(String s1, String s2)
{
int n1 = s1.Length,
n2 = s2.Length;
if (n1 > n2)
return false ;
for ( int i = 0; i < n1; i++)
if (s1[n1 - i - 1] !=
s2[n2 - i - 1])
return false ;
return true ;
}
static bool CheckBinaryEquivalent( int N,
String str)
{
int B_Number = 0;
int cnt = 0;
while (N != 0)
{
int rem = N % 2;
int c = ( int )Math.Pow(10, cnt);
B_Number += rem * c;
N /= 2;
cnt++;
}
String bin = B_Number.ToString();
return isSuffix(str, bin);
}
public static void Main (String[] args)
{
int N = 23;
String str = "111" ;
if (CheckBinaryEquivalent(N, str))
Console.WriteLine( "Yes\n" );
else
Console.WriteLine( "No\n" );
}
}
|
Javascript
<script>
function isSuffix(s1, s2)
{
var n1 = s1.length;
var n2 = s2.length;
if (n1 > n2)
return false ;
for ( var i = 0; i < n1; i++)
if (s1[n1 - i - 1] != s2[n2 - i - 1])
return false ;
return true ;
}
function CheckBinaryEquivalent(N, str)
{
var B_Number = 0;
var cnt = 0;
while (N != 0) {
var rem = N % 2;
var c = Math.pow(10, cnt);
B_Number += rem * c;
N = parseInt(N/2);
cnt++;
}
var bin = B_Number.toString();
return isSuffix(str, bin);
}
var N = 23;
var str = "111" ;
if (CheckBinaryEquivalent(N, str))
document.write( "Yes" );
else
document.write( "No" );
</script>
|
Time Complexity: O(|str|)
Auxiliary Space: O(log2(N)) as we are making an extra string bin for converting N into its binary equivalent string
Last Updated :
08 Jun, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...