Given a pattern pat and a string array sArr[], the task is to count the number of strings from the array that ends with the given pattern.
Examples:
Input: pat = “ks”, sArr[] = {“neveropen”, “neveropen”, “games”, “unit”}
Output: 2
Only string “neveropen” and “neveropen” end with the pattern “ks”.Input: pat = “abc”, sArr[] = {“abcd”, “abcc”, “aaa”, “bbb”}
Output: 0
Approach:
- Initialize count = 0 and start traversing the given string array.
 - For every string str, initialize strLen = len(str) and patLen = len(pattern). 
- If patLen > strLen then skips to the next string as the current string cannot end with the given pattern.
 - Else match the string with the pattern starting from the end. If the string matches the pattern then update count = count + 1.
 
 - Print the count in the end.
 
Below is the implementation of the above approach:
C++
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std;// Function that return true if str// ends with patbool endsWith(string str, string pat){    int patLen = pat.length();    int strLen = str.length();    // Pattern is larger in length than    // the string    if (patLen > strLen)        return false;    // We match starting from the end while    // patLen is greater than or equal to 0.    patLen--;    strLen--;    while (patLen >= 0) {        // If at any index str doesn't match        // with pattern        if (pat[patLen] != str[strLen])            return false;        patLen--;        strLen--;    }    // If str ends with the given pattern    return true;}// Function to return the count of required// stringsint countOfStrings(string pat, int n,                        string sArr[]){    int count = 0;    for (int i = 0; i < n; i++)        // If current string ends with         // the given pattern        if (endsWith(sArr[i], pat))            count++;    return count;}// Driver codeint main(){    string pat = "ks";    int n = 4;    string sArr[] = { "neveropen", "neveropen", "games", "unit" };    cout << countOfStrings(pat, n, sArr);    return 0;} | 
Java
// Java implementation of the approach class GfG{    // Function that return true     // if str ends with pat     static boolean endsWith(String str, String pat)     {         int patLen = pat.length();         int strLen = str.length();              // Pattern is larger in length         // than the string         if (patLen > strLen)             return false;              // We match starting from the end while         // patLen is greater than or equal to 0.         patLen--;         strLen--;         while (patLen >= 0)        {                  // If at any index str doesn't match             // with pattern             if (pat.charAt(patLen) != str.charAt(strLen))                 return false;             patLen--;             strLen--;         }              // If str ends with the given pattern         return true;     }          // Function to return the     // count of required strings     static int countOfStrings(String pat, int n,                         String sArr[])     {         int count = 0;         for (int i = 0; i < n; i++)        {                  // If current string ends with             // the given pattern             if (endsWith(sArr[i], pat))                 count++;         }        return count;     }     // Driver code    public static void main(String []args)    {        String pat = "ks";         int n = 4;         String sArr[] = { "neveropen", "neveropen", "games", "unit" };         System.out.println(countOfStrings(pat, n, sArr));    }}     // This code is contributed by Rituraj Jain | 
Python3
# Python3 implementation of the approach# Function that return true if str1# ends with patdef endsWith(str1, pat):    patLen = len(pat)    str1Len = len(str1)    # Pattern is larger in length     # than the string    if (patLen > str1Len):        return False    # We match starting from the end while    # patLen is greater than or equal to 0.    patLen -= 1    str1Len -= 1    while (patLen >= 0):         # If at any index str1 doesn't match        # with pattern        if (pat[patLen] != str1[str1Len]):            return False        patLen -= 1        str1Len -= 1         # If str1 ends with the given pattern    return True# Function to return the count of# required stringsdef countOfstrings(pat, n, sArr):    count = 0    for i in range(n):        # If current string ends with         # the given pattern        if (endsWith(sArr[i], pat) == True):            count += 1    return count# Driver codepat = "ks"n = 4sArr= [ "neveropen", "neveropen",                  "games", "unit"] print(countOfstrings(pat, n, sArr))# This code is contributed by# Mohit kumar 29 | 
C#
// C# implementation of the approachusing System;class GFG{     // Function that return true if str// ends with patstatic bool endsWith(string str, string pat){    int patLen = pat.Length;    int strLen = str.Length;    // Pattern is larger in length than    // the string    if (patLen > strLen)        return false;    // We match starting from the end while    // patLen is greater than or equal to 0.    patLen--;    strLen--;    while (patLen >= 0)    {        // If at any index str doesn't match        // with pattern        if (pat[patLen] != str[strLen])            return false;        patLen--;        strLen--;    }    // If str ends with the given pattern    return true;}// Function to return the count of required// stringsstatic int countOfStrings(string pat, int n,                         string[] sArr){    int count = 0;    for (int i = 0; i < n; i++)        // If current string ends with         // the given pattern        if (endsWith(sArr[i], pat))            count++;    return count;}// Driver codepublic static void Main(){    string pat = "ks";    int n = 4;    string[] sArr = { "neveropen", "neveropen",                                "games", "unit" };    Console.WriteLine(countOfStrings(pat, n, sArr));}}// This code is contributed by Akanksha Rai  | 
PHP
<?php// PHP implementation of the approach// Function that return true if str// ends with patfunction endsWith($str, $pat){    $patLen = strlen($pat);    $strLen = strlen($str);    // Pattern is larger in length than    // the string    if ($patLen > $strLen)        return false;    // We match starting from the end while    // patLen is greater than or equal to 0.    $patLen--;    $strLen--;    while ($patLen >= 0)     {        // If at any index str doesn't match        // with pattern        if ($pat[$patLen] != $str[$strLen])            return false;        $patLen--;        $strLen--;    }    // If str ends with the given pattern    return true;}// Function to return the count of required// stringsfunction countOfStrings($pat, $n, $sArr){    $count = 0;    for ($i = 0; $i < $n; $i++)        // If current string ends with         // the given pattern        if (endsWith($sArr[$i], $pat))            $count++;    return $count;}// Driver code$pat = "ks";$n = 4;$sArr = array("neveropen", "neveropen",              "games", "unit");echo countOfStrings($pat, $n, $sArr);// This code is contributed by mits?> | 
Javascript
<script>// JavaScript implementation of the approach          // Function that return true     // if str ends with pat     function endsWith(str,pat)    {        let patLen = pat.length;         let strLen = str.length;                // Pattern is larger in length         // than the string         if (patLen > strLen)             return false;                // We match starting from the end while         // patLen is greater than or equal to 0.         patLen--;         strLen--;         while (patLen >= 0)        {                    // If at any index str doesn't match             // with pattern             if (pat[patLen] != str[strLen])                 return false;             patLen--;             strLen--;         }                // If str ends with the given pattern         return true;     }          // Function to return the     // count of required strings     function countOfStrings(pat,n,sArr)    {        let count = 0;         for (let i = 0; i < n; i++)        {                    // If current string ends with             // the given pattern             if (endsWith(sArr[i], pat))                 count++;         }        return count;     }         // Driver code    let pat = "ks";     let n = 4;     let sArr=[ "neveropen", "neveropen", "games", "unit"];    document.write(countOfStrings(pat, n, sArr));// This code is contributed by unknown2108</script> | 
2
Time Complexity: O(m * n), where m is the length of pattern string and n is the size of the string array.
Auxiliary Space: O(1), no extra space is required, so it is a constant.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!
