Given two numbers A and B where (A > B), the task is to check if B is a suffix of A or not. Print “Yes” if it is a suffix Else print “No”.
Examples:
Input: A = 12345, B = 45
Output: Yes
Input: A = 12345, B = 123
Output: No
Method 1:
- Convert the given numbers A and B to strings str1 and str2 respectively.
- Traverse both the strings from the end of the strings.
- While traversing the strings, if at any index characters from str1 and str2 are unequal then print “No”.
- Else print “Yes”.
Below is the implementation of the above approach:
// C++ program for the above approach #include "bits/stdc++.h" using namespace std;
// Function to check if B is a // suffix of A or not bool checkSuffix( int A, int B)
{ // Convert numbers into strings
string s1 = to_string(A);
string s2 = to_string(B);
// Find the lengths of strings
// s1 and s2
int n1 = s1.length();
int n2 = s2.length();
// Base Case
if (n1 < n2) {
return false ;
}
// Traverse the strings s1 & s2
for ( int i = 0; i < n2; i++) {
// If at any index characters
// are unequals then return false
if (s1[n1 - i - 1]
!= s2[n2 - i - 1]) {
return false ;
}
}
// Return true
return true ;
} // Driver Code int main()
{ // Given numbers
int A = 12345, B = 45;
// Function Call
bool result = checkSuffix(A, B);
// If B is a suffix of A, then
// print "Yes"
if (result) {
cout << "Yes" ;
}
else {
cout << "No" ;
}
return 0;
} |
// Java program for the above approach class GFG{
// Function to check if B // is a suffix of A or not public static boolean checkSuffix( int A,
int B)
{ // Convert numbers into strings
String s1 = String.valueOf(A);
String s2 = String.valueOf(B);
// Find the lengths of strings
// s1 and s2
int n1 = s1.length();
int n2 = s2.length();
// Base case
if (n1 < n2)
{
return false ;
}
// Traverse the strings s1 & s2
for ( int i = 0 ; i < n2; i++)
{
// If at any index characters
// are unequals then return false
if (s1.charAt(n1 - i - 1 ) !=
s2.charAt(n2 - i - 1 ))
{
return false ;
}
}
// Return true
return true ;
} // Driver code public static void main(String[] args)
{ // Given numbers
int A = 12345 , B = 45 ;
// Function Call
boolean result = checkSuffix(A, B);
// If B is a suffix of A,
// then print "Yes"
if (result)
{
System.out.print( "Yes" );
}
else
{
System.out.println( "No" );
}
} } // This code is contributed by divyeshrabadiya07 |
# Python3 program for the above approach # Function to check if B is a # suffix of A or not def checkSuffix(A, B):
# Convert numbers into strings
s1 = str (A);
s2 = str (B);
# Find the lengths of strings
# s1 and s2
n1 = len (s1)
n2 = len (s2)
# Base Case
if (n1 < n2):
return False ;
# Traverse the strings s1 & s2
for i in range (n2):
# If at any index characters
# are unequals then return false
if (s1[n1 - i - 1 ] ! = s2[n2 - i - 1 ]):
return False ;
# Return true
return True ;
# Driver Code # Given numbers A = 12345
B = 45 ;
# Function Call result = checkSuffix(A, B);
# If B is a suffix of A, then # print "Yes" if (result):
print ( "Yes" )
else :
print ( "No" )
# This code is contributed by grand_master |
// C# program for the above approach using System;
class GFG{
// Function to check if B // is a suffix of A or not public static bool checkSuffix( int A,
int B)
{ // Convert numbers into strings
string s1 = A.ToString();
string s2 = B.ToString();
// Find the lengths of strings
// s1 and s2
int n1 = s1.Length;
int n2 = s2.Length;
// Base case
if (n1 < n2)
{
return false ;
}
// Traverse the strings s1 & s2
for ( int i = 0; i < n2; i++)
{
// If at any index characters
// are unequals then return false
if (s1[n1 - i - 1] != s2[n2 - i - 1])
{
return false ;
}
}
// Return true
return true ;
} // Driver code public static void Main( string [] args)
{ // Given numbers
int A = 12345, B = 45;
// Function Call
bool result = checkSuffix(A, B);
// If B is a suffix of A,
// then print "Yes"
if (result)
{
Console.Write( "Yes" );
}
else
{
Console.Write( "No" );
}
} } // This code is contributed by rutvik_56 |
<script> // javascript program for the above approach // Function to check if B // is a suffix of A or not function checkSuffix( A, B)
{ // Convert numbers into strings
var s1 = A.toString();
var s2 = B.toString();
// Find the lengths of strings
// s1 and s2
var n1 = s1.length;
var n2 = s2.length;
// Base case
if (n1 < n2)
{
return false ;
}
// Traverse the strings s1 & s2
for ( var i = 0; i < n2; i++)
{
// If at any index characters
// are unequals then return false
if (s1[n1 - i - 1] != s2[n2 - i - 1])
{
return false ;
}
}
// Return true
return true ;
} // Driver code // Given numbers
var A = 12345, B = 45;
// Function Call
var result = checkSuffix(A, B);
// If B is a suffix of A,
// then print "Yes"
if (result)
{
document.write( "Yes" );
}
else
{
document.write( "No" );
}
</script> |
Yes
Method 2: Using inbuilt function std::boost::algorithm::ends_with() which is included in Boost Library of C++ which is used to check whether any string contains suffix of another string or not.
Below is the implementation of the above approach:
// C++ program for the above approach #include <bits/stdc++.h> #include <boost/algorithm/string.hpp> using namespace std;
// Function to check if B is a // suffix of A or not void checkSuffix( int A, int B)
{ // Convert numbers into strings
string s1 = to_string(A);
string s2 = to_string(B);
bool result;
// Check if s2 is a suffix of s1
// or not using ends_with() function
result = boost::algorithm::ends_with(s1,
s2);
// If result is true, print "Yes"
if (result) {
cout << "Yes" ;
}
else {
cout << "No" ;
}
} // Driver Code int main()
{ // Given numbers
int A = 12345, B = 45;
// Function Call
checkSuffix(A, B);
return 0;
} |
// Java program for the above approach import java.util.*;
class GFG{
// Function to check if B is a // suffix of A or not static void checkSuffix( int A, int B)
{ // Convert numbers into Strings
String s1 = String.valueOf(A);
String s2 = String.valueOf(B);
boolean result;
// Check if s2 is a suffix of s1
// or not
result = s1.endsWith(s2);
// If result is true, print "Yes"
if (result)
{
System.out.print( "Yes" );
}
else
{
System.out.print( "No" );
}
} // Driver Code public static void main(String[] args)
{ // Given numbers
int A = 12345 , B = 45 ;
// Function Call
checkSuffix(A, B);
} } // This code is contributed by 29AjayKumar |
# Python3 program for the above approach # Function to check if B is # a suffix of A or not def checkSuffix(A, B):
# Convert numbers into strings
s1 = str (A)
s2 = str (B)
# Check if s2 is a suffix of s1
# or not
result = s1.endswith(s2)
# If result is true print "Yes"
if (result):
print ( "Yes" )
else :
print ( "No" )
# Driver code if __name__ = = '__main__' :
# Given numbers
A = 12345
B = 45
# Function call
checkSuffix(A, B)
# This code is contributed by himanshu77 |
// C# program for the above approach using System;
class GFG{
// Function to check if B is a // suffix of A or not static void checkSuffix( int A, int B)
{ // Convert numbers into Strings
String s1 = String.Join( "" , A);
String s2 = String.Join( "" , B);
bool result;
// Check if s2 is a suffix of s1
// or not
result = s1.EndsWith(s2);
// If result is true, print "Yes"
if (result)
{
Console.Write( "Yes" );
}
else
{
Console.Write( "No" );
}
} // Driver Code public static void Main(String[] args)
{ // Given numbers
int A = 12345, B = 45;
// Function Call
checkSuffix(A, B);
} } // This code is contributed by 29AjayKumar |
<script> // JavaScript program for the above approach // Function to check if B is a // suffix of A or not function checkSuffix( A, B)
{ // Convert numbers into Strings
let s1 = A.toString();
let s2 = B.toString();
let result;
// Check if s2 is a suffix of s1
// or not
result = s1.endsWith(s2);
// If result is true, print "Yes"
if (result)
{
document.write( "Yes" );
}
else
{
document.write( "No" );
}
} // Driver Code // Given numbers
let A = 12345, B = 45;
// Function Call
checkSuffix(A, B);
</script> |
Yes
Method 3:
- Subtract B from A.
- Find the number of digits in B(say X) by using the Method 3 discussed in this article.
- Check whether A ends with atleast X number zeros or not. If yes then print “Yes”.
- Else print “No”.
Below is the implementation of the above approach:
// C++ program for the above approach #include <bits/stdc++.h> using namespace std;
// Function to check if B is a suffix of A or not bool checkSuffix( int A, int B){
// Find the number of digit in B
int digit_B = log10 (B) + 1;
// Subtract B from A
A -= B;
// Returns true, if B is a suffix of A
return (A % int ( pow (10, digit_B)));
} // Driver Code to test above function int main(){
// Given numbers
int A = 12345, B = 45;
// Function Call
bool result = checkSuffix(A, B);
// If B is a suffix of A, then print "Yes"
if (!result) cout<< "Yes" ;
else cout<< "No" ;
return 0;
} |
// Java program for the above approach import java.util.*;
class GFG{
// Function to check if B // is a suffix of A or not static boolean checkSuffix( int A, int B)
{ // Find the number of digit in B
int digit_B = ( int ) (Math.log10(B) + 1 );
// Subtract B from A
A -= B;
// Returns true,
// if B is a suffix of A
return (A % ( int )(Math.pow( 10 , digit_B)) > 0 );
} // Driver code public static void main(String[] args)
{ // Given numbers
int A = 12345 , B = 45 ;
// Function call
boolean result = checkSuffix(A, B);
// If B is a suffix of A,
// then print "Yes"
if (!result)
{
System.out.print( "Yes" );
}
else
{
System.out.print( "No" );
}
} } // This code is contributed by 29AjayKumar |
# Python3 program for the above approach import math
# Function to check if B is a # suffix of A or not def checkSuffix(A, B):
# Find the number of digit in B
digit_B = int (math.log10(B)) + 1 ;
# Subtract B from A
A - = B;
# Returns true,
# if B is a suffix of A
return (A % int (math. pow ( 10 , digit_B)));
# Driver Code # Given numbers A = 12345 ; B = 45 ;
# Function Call result = checkSuffix(A, B);
# If B is a suffix of A, then # print "Yes" if (result = = 0 ):
print ( "Yes" );
else :
print ( "No" );
# This code is contributed by Nidhi_biet |
// C# program for the above approach using System;
class GFG{
// Function to check if B // is a suffix of A or not static bool checkSuffix( int A, int B)
{ // Find the number of digit in B
int digit_B = ( int )(Math.Log10(B) + 1);
// Subtract B from A
A -= B;
// Returns true,
// if B is a suffix of A
return (A % ( int )(Math.Pow(10, digit_B)) > 0);
} // Driver code public static void Main()
{ // Given numbers
int A = 12345, B = 45;
// Function call
bool result = checkSuffix(A, B);
// If B is a suffix of A,
// then print "Yes"
if (!result)
{
Console.Write( "Yes" );
}
else
{
Console.Write( "No" );
}
} } // This code is contributed by Code_Mech |
<script> // JavaScript program for the above approach
// Function to check if B
// is a suffix of A or not
function checkSuffix(A, B)
{
// Find the number of digit in B
let digit_B = parseInt(Math.log10(B) + 1, 10);
// Subtract B from A
A -= B;
// Returns true,
// if B is a suffix of A
return (A % (Math.pow(10, digit_B)) > 0);
}
// Given numbers
let A = 12345, B = 45;
// Function call
let result = checkSuffix(A, B);
// If B is a suffix of A,
// then print "Yes"
if (!result)
{
document.write( "Yes" );
}
else
{
document.write( "No" );
}
</script> |
Yes
Time Complexity: O(logn) because it is using inbuilt pow function
Auxiliary Space: O(1)
Method 4:
1. In this method, we use the modulo operator to check if the last len(str(B)) digits of A are equal to B.
2. We do this by computing A % (10**len(str(B))), which gives us the remainder when A is divided by 10**len(str(B)).
3. If this remainder is equal to B, then A ends with B.
#include <iostream> #include<math.h> using namespace std;
int main()
{ int A = 12345;
int B = 45;
if (A % static_cast < int >( pow (10, to_string(B).length())) == B) {
cout << "Yes" << endl;
}
else {
cout << "No" << endl;
}
} |
import java.lang.Math;
public class Main {
public static void main(String[] args)
{
int A = 12345 ;
int B = 45 ;
// check if A mod 10^length of B is
// equal to B
if (A % ( int )Math.pow(
10 , Integer.toString(B).length()) == B) {
System.out.println( "Yes" );
}
else {
System.out.println( "No" );
}
}
} |
A = 12345
B = 45
if A % ( 10 * * len ( str (B))) = = B:
print ( "Yes" )
else :
print ( "No" )
|
using System;
class Program {
static void Main( string [] args) {
int A = 12345;
int B = 45;
if (A % ( int )Math.Pow(10, B.ToString().Length) == B) {
Console.WriteLine( "Yes" );
}
else {
Console.WriteLine( "No" );
}
}
} |
const A = 12345; const B = 45; if (A % Math.pow(10, B.toString().length) === B) {
console.log( "Yes" );
} else {
console.log( "No" );
} |
Yes
Time Complexity: O(N)
The time complexity of the code is O(N), where N is the length of A (which is equivalent to the number of digits in A). This is because the code performs two operations that take O(N) time in the worst case:
The expression 10**len(str(B)) calculates the value of 10 raised to the power of the number of digits in B. Since B has at most N digits, the length of str(B) is at most N, and the expression takes O(N) time to compute.
The expression A % (10**len(str(B))) calculates the remainder when A is divided by the value computed in step 1. Since the value computed in step 1 is at most 10**N, the division takes O(N) time to compute.
Space Complexity: O(N)
The space complexity of the code is also O(N), because the code uses two variables (A and B) that can store numbers with up to N digits.