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!

… [Trackback]
[…] Find More on that Topic: geeksforgeeks.org/count-strings-that-end-with-the-given-pattern/ […]
… [Trackback]
[…] Info to that Topic: geeksforgeeks.org/count-strings-that-end-with-the-given-pattern/ […]