Open In App

Check if a number starts with another number or not

Improve
Improve
Like Article
Like
Save
Share
Report

Given two numbers A and B where (A > B), the task is to check if B is a prefix of A or not. Print “Yes” if it is a prefix Else print “No”.

Examples: 

Input: A = 12345, B = 12 
Output: Yes

Input: A = 12345, B = 345 
Output: No 

Approach: 

  1. Convert the given numbers A and B to strings str1 and str2 respectively.
  2. Traverse both the strings from the start of the strings.
  3. While traversing the strings, if at any index characters from str1 and str2 are unequal then print “No”.
  4. 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
// prefix of A or not
bool checkprefix(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[i]
            != s2[i]) {
            return false;
        }
    }
 
    // Return true
    return true;
}
 
// Driver Code
int main()
{
    // Given numbers
    int A = 12345, B = 12;
 
    // Function Call
    bool result = checkprefix(A, B);
 
    // If B is a prefix 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
// prefix of A or not
static boolean checkprefix(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(i) != s2.charAt(1))
        {
            return false;
        }
    }
 
    // Return true
    return true;
}
 
// Driver Code
public static void main(String[] args)
{
     
    // Given numbers
    int A = 12345, B = 12;
 
    // Function call
    boolean result = checkprefix(A, B);
 
    // If B is a prefix of A, then
    // print "Yes"
    if (!result)
    {
        System.out.print("Yes");
    }
    else
    {
        System.out.print("No");
    }
}
}
 
// This code is contributed by amal kumar choubey


Python3




# Python3 program for the
# above approach
 
# Function to check if B is
# a prefix of A or not
def checkprefix(A, B):
     
    # Convert numbers into strings
    s1 = str(A)
    s2 = str(B)
     
    # Find the length of s1 and s2
    n1 = len(s1)
    n2 = len(s2)
     
    # Base case
    if n1 < n2:
        return False
         
    # Traverse the string s1 and s2
    for i in range(0, n2):
         
        # If at any index characters
        # are unequal then return False
        if s1[i] != s2[i]:
            return False
             
    return True
 
# Driver code
if __name__=='__main__':
     
    # Given numbers
    A = 12345
    B = 12
     
    # Function call
    result = checkprefix(A, B)
     
    # If B is a prefix of A ,
    # then print Yes
    if result:
        print("Yes")
    else:
        print("No")
         
# This code is contributed by virusbuddah_


C#




// C# program for the above approach
using System;
 
class GFG{
     
// Function to check if B is a
// prefix of A or not
static bool checkprefix(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[i] != s2[i])
        {
            return false;
        }
    }
 
    // Return true
    return true;
}
 
// Driver Code
static public void Main ()
{
     
    // Given numbers
    int A = 12345, B = 12;
 
    // Function call
    bool result = checkprefix(A, B);
 
    // If B is a prefix of A, then
    // print "Yes"
    if (result)
    {
        Console.Write("Yes");
    }
    else
    {
        Console.Write("No");
    }
}
}
 
// This code is contributed by shubhamsingh10


Javascript




<script>
 
// javascript program for the above approach
   
 
// Function to check if B is a
// prefix of A or not
 
function checkprefix( 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[i] != s2[i])
        {
            return false;
        }
    }
   
    // Return true
    return true;
}
   
// Driver Code
 
       
    // Given numbers
    var A = 12345, B = 12;
   
    // Function call
    var result = checkprefix(A, B);
   
    // If B is a prefix of A, then
    // print "Yes"
    if (result)
    {
        document.write("Yes");
    }
    else
    {
        document.write("No");
    }
 
 
</script>
 
  


Output

Yes

Time Complexity: O(n2), where n2 is the size of string s2
Auxiliary Space: O(1), as no extra space is required

Using in-built function: Using inbuilt function std::boost::algorithm::starts_with(), it can be checked whether any string contains prefix 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
// prefix of A or not
void checkprefix(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 prefix of s1
    // or not using starts_with() function
    result = boost::algorithm::starts_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 = 12;
 
    // Function Call
    checkprefix(A, B);
    return 0;
}


Java




// Java program for the above approach
class GFG{
 
// Function to check if B is a
// prefix of A or not
static void checkprefix(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 prefix of s1
    // or not using starts_with() function
    result = s1.startsWith(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 = 12;
 
    // Function call
    checkprefix(A, B);
}
}
 
// This code is contributed by amal kumar choubey


Python3




# Python3 program for the
# above approach
 
# Function to check if B is
# a prefix of A or not
def checkprefix(A, B):
     
    # Convert numbers into strings
    s1 = str(A)
    s2 = str(B)
     
    # Check if s2 is a prefix of s1
    # or not using startswith() function
    result = s1.startswith(s2)
     
    # If result is true print Yes
    if result:
        print("Yes")
    else:
        print("No")
 
# Driver code
if __name__=='__main__':
     
    # Given numbers
    A = 12345
    B = 12
     
    # Function call
    checkprefix(A, B)
     
# This code is contributed by virusbuddah_


C#




// C# program for the above approach
using System.Threading;
using System.Globalization;
using System;
 
class GFG{
     
// Function to check if B is a
// prefix of A or not
static void checkprefix(int A, int B)
{
 
    // Convert numbers into Strings
    string s1 = A.ToString();
    string s2 = B.ToString();
 
    bool result;
 
    // Check if s2 is a prefix of s1
    // or not using starts_with() function
    result = s1.StartsWith(s2, false,
        CultureInfo.InvariantCulture);
 
    // If result is true, print "Yes"
    if (result)
    {
        Console.Write("Yes");
    }
    else
    {
        Console.Write("No");
    }
}
 
// Driver code
static void Main()
{
     
    // Given numbers
    int A = 12345, B = 12;
     
    // Function call
    checkprefix(A, B);
}
}
 
// This code is contributed by divyeshrabadiya07


Javascript




<script>
 
      // JavaScript program for the above approach
      // Function to check if B is a
      // prefix of A or not
      function checkprefix(A, B) {
        // Convert numbers into Strings
        var s1 = A.toString();
        var s2 = B.toString();
 
        var result;
 
        // Check if s2 is a prefix of s1
        // or not using starts_with() function
        result = s1.startsWith(s2);
 
        // If result is true, print "Yes"
        if (result) {
          document.write("Yes");
        } else {
          document.write("No");
        }
      }
 
      // Driver code
      // Given numbers
      var A = 12345,
        B = 12;
 
      // Function call
      checkprefix(A, B);
       
 </script>


Output

Yes

Time Complexity: O(1)
Auxiliary Space: O(1)



Last Updated : 07 Jan, 2024
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads