Count strings that end with the given pattern

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[] = {“geeks”, “geeksforgeeks”, “games”, “unit”}
Output: 2
Only string “geeks” and “geeksforgeeks” 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 skip 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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
  
// Function that return true if str
// ends with pat
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
// strings
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
int main()
{
  
    string pat = "ks";
    int n = 4;
    string sArr[] = { "geeks", "geeksforgeeks", "games", "unit" };
  
    cout << countOfStrings(pat, n, sArr);
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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[] = { "geeks", "geeksforgeeks", "games", "unit" }; 
        System.out.println(countOfStrings(pat, n, sArr));
    }
}
      
// This code is contributed by Rituraj Jain

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation of the approach
  
# Function that return true if str1
# ends with pat
def endsWith(str1, pat):
  
    patLen = len(pat)
    str1Len = len(str1)
  
    # Pattern is larger in length 
    # than the str1ing
    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 str1ings
def countOfstr1ings(pat, n, sArr):
  
    count = 0
  
    for i in range(n):
  
        # If current str1ing ends with 
        # the given pattern
        if (endsWith(sArr[i], pat) == True):
            count += 1
    return count
  
# Driver code
pat = "ks"
n = 4
sArr= [ "geeks", "geeksforgeeks"
                 "games", "unit"
  
print(countOfstr1ings(pat, n, sArr))
  
# This code is contributed by
# Mohit kumar 29

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the approach
using System;
  
class GFG
{
      
// Function that return true if str
// ends with pat
static 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
// 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 pat = "ks";
    int n = 4;
    string[] sArr = { "geeks", "geeksforgeeks",
                                "games", "unit" };
    Console.WriteLine(countOfStrings(pat, n, sArr));
}
}
  
// This code is contributed by Akanksha Rai 

chevron_right


PHP

$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)
{
$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("geeks", "geeksforgeeks", "games", "unit"); echo countOfStrings($pat, $n, $sArr); // This code is contributed by mits ?>

Output:

2


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.