Check if a number ends with another number or not
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++
// 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
// 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
# 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#
// 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 |
Javascript
<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++
// 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
// 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
# 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#
// 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 |
Javascript
<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++
// 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
// 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
# 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#
// 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 |
Javascript
<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.
C++
#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; } } |
Java
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" ); } } } |
Python3
A = 12345 B = 45 if A % ( 10 * * len ( str (B))) = = B: print ( "Yes" ) else : print ( "No" ) |
C#
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" ); } } } |
Javascript
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.
Contact Us