Open In App

Check if a string is suffix of another

Last Updated : 22 Nov, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Given two strings s1 and s2, check if s1 is a suffix of s2. Or in simple words, we need to find whether string s2 ends with string s1. 

Examples : 

Input : s1 = "geeks" and s2 = "geeksforgeeks"
Output : Yes

Input : s1 = "world", s2 = "my first code is hello world"
Output : Yes

Input : s1 = "geeks" and s2 = "geeksforGeek"
Output : No

Method 1 (Writing our own code):

C++




// CPP program to find if a string is suffix of another
#include <bits/stdc++.h>
using namespace std;
 
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;
}
 
int main()
{
    string s1 = "geeks", s2 = "geeksforgeeks";
 
    // Test case-sensitive implementation of endsWith
    // function
    bool result = isSuffix(s1, s2);
 
    if (result)
        cout << "Yes";
    else
        cout << "No";
 
    return 0;
}
 
// This code is contributed by Aditya Kumar (adityakumar129)


C




// C program to find if a string is suffix of another
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
 
bool isSuffix(char s1[], char s2[])
{
    int n1 = strlen(s1), n2 = strlen(s2);
    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;
}
 
int main()
{
    char s1[] = "geeks", s2[] = "geeksforgeeks";
 
    // Test case-sensitive implementation of endsWith
    // function
    bool result = isSuffix(s1, s2);
    if (result)
        printf("Yes");
    else
        printf("No");
    return 0;
}
 
// This code is contributed by Aditya Kumar (adityakumar129)


Java




// Java program to find if a string is
// suffix of another
 
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;
    }
     
    public static void main(String []args)
    {
        String s1 = "geeks", s2 = "geeksforgeeks";
     
        // Test case-sensitive implementation
        // of endsWith function
        boolean result = isSuffix(s1, s2);
     
        if (result)
            System.out.println( "Yes");
        else
            System.out.println("No");
     
         
    }
 
}
 
// This code is contributed by iAyushRaj


Python3




# Python 3 program to find if a
# string is suffix of another
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
 
# Driver Code
if __name__ == "__main__":
     
    s1 = "geeks"
    s2 = "geeksforgeeks"
 
    # Test case-sensitive implementation
    # of endsWith function
    result = isSuffix(s1, s2)
 
    if (result):
        print("Yes")
    else:
        print( "No")
 
# This code is contributed
# by ChitraNayal


C#




// C# program to find if a string is
// suffix of another
 
using System;
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;
    }
     
    public static void Main()
    {
        string s1 = "geeks", s2 = "geeksforgeeks";
     
        // Test case-sensitive implementation
        // of endsWith function
        bool result = isSuffix(s1, s2);
     
        if (result)
            Console.WriteLine( "Yes");
        else
            Console.WriteLine("No");
     
         
    }
 
}
 
// This code is contributed by iAyushRaj


PHP




<?php
// PHP program to find if a
// string is suffix of another
function isSuffix($s1, $s2)
{
    $n1 = ($s1);
    $n2 = strlen($s2);
    if ($n1 > $n2)
    return false;
    for ($i = 0; $i < $n1; $i++)
    if ($s1[$n1 - $i - 1] != $s2[$n2 - $i - 1])
        return false;
    return true;
}
// Driver Code
$s1 = "geeks";
$s2 = "geeksforgeeks";
 
// Test case-sensitive implementation
// of endsWith function
$result = isSuffix($s1, $s2);
 
if ($result)
    echo "Yes";
else
    echo "No";
 
// This code is contributed by m_kit
?>


Javascript




<script>
 
// Javascript program to find if
// a string is suffix of another
function isSuffix(s1, s2)
{
    let n1 = s1.length, n2 = s2.length;
    if (n1 > n2)
        return false;
         
    for(let i = 0; i < n1; i++)
        if (s1[n1 - i - 1] != s2[n2 - i - 1])
            return false;
         
    return true;
}
 
// Driver code
let s1 = "geeks", s2 = "geeksforgeeks";
   
// Test case-sensitive implementation
// of endsWith function
let result = isSuffix(s1, s2);
 
if (result)
    document.write( "Yes");
else
    document.write("No");
     
// This code is contributed by decode2207
 
</script>


Output

Yes

Time Complexity: O(n), where n is the size of the given string s1.
Auxiliary Space: O(1), no extra space is required, so it is a constant.

Method 2 (Using boost library in C++):

Since std::string class does not provide any endWith() function in which a string ends with another string so we will be using Boost Library. Make sure to include #include boost/algorithm/string.hpp and #include string to run the code fine.

C++




// CPP program to find if a string is
// suffix of another
#include <boost/algorithm/string.hpp>
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    string s1 = "geeks", s2 = "geeksforgeeks";
 
    // Test case-sensitive implementation
    // of endsWith function
    bool result = boost::algorithm::ends_with(s2, s1);
 
    if (result)
        cout << "Yes";
    else
        cout << "No";
 
    return 0;
}


Java




// Java program to find if a string is
// suffix of another
class GFG
{
 
    public static void main(String[] args)
    {
        String s1 = "geeks", s2 = "geeksforgeeks";
 
        // Test case-sensitive implementation
        // of endsWith function
        boolean result = s2.endsWith(s1);
 
        if (result)
                System.out.println("Yes");
        else
            System.out.println("No");
    }
}
 
// This code is contributed by 29AjayKumar


Python3




# Python3 program to find if a string is
# suffix of another
 
if __name__ == '__main__':
    s1 = "geeks";
    s2 = "geeksforgeeks";
     
    # Test case-sensitive implementation
    # of endsWith function
    result = s2.endswith(s1);
     
    if (result):
        print("Yes");
    else:
        print("No");
     
# This code is contributed by Rajput-Ji


C#




// C# program to find if a string is
// suffix of another
using System;
 
class GFG
{
    // Driver code
    public static void Main(String[] args)
    {
        String s1 = "geeks", s2 = "geeksforgeeks";
 
        // Test case-sensitive implementation
        // of endsWith function
        bool result = s2.EndsWith(s1);
 
        if (result)
                Console.WriteLine("Yes");
        else
            Console.WriteLine("No");
    }
}
 
// This code contributed by Rajput-Ji


Javascript




<script>
// Javascript program to find if a string is
// suffix of another
     
    let s1 = "geeks", s2 = "geeksforgeeks";
    // Test case-sensitive implementation
    // of endsWith function
    let result = s2.endsWith(s1);
    if (result)
            document.write("Yes");
    else
        document.write("No");
         
     
    // This code is contributed by avanitrachhadiya2155
</script>


Output

Yes

Time Complexity: O(n), where n is the size of the given string s1.
Auxiliary Space: O(1)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads