# Count strings that end with the given pattern

Last Updated : 29 Nov, 2022

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:
Only string “geeks” and “geeksforgeeks” end with the pattern “ks”.

Input: pat = “abc”, sArr[] = {“abcd”, “abcc”, “aaa”, “bbb”}
Output:

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 ` `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;` `}`

## 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[] = { ``"geeks"``, ``"geeksforgeeks"``, ``"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 pat` `def` `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 strings` `def` `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 code` `pat ``=` `"ks"` `n ``=` `4` `sArr``=` `[ ``"geeks"``, ``"geeksforgeeks"``, ` `                 ``"games"``, ``"unit"``] `   `print``(countOfstrings(pat, n, sArr))`   `# This code is contributed by` `# Mohit kumar 29`

## C#

 `// 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 `

## 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` `?>`

## Javascript

 ``

Output

`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.

Previous
Next