# Find the number of occurrences of a character upto preceding position

• Last Updated : 11 Jun, 2021

Given a string S of length N and an integer P(1â‰¤Pâ‰¤N) denoting the position of a character in the string. The task is to find the number of occurrences of the character present at the position P upto P-1 index.

Examples:

Input : S = “ababababab”, P = 9
Output :
Character at P is ‘a’. Number of occurrences of ‘a’ upto 8th index is 4

Input : S = “geeksforgeeks”, P = 9
Output : 1

Naive Approach :A naive approach is to iterate over the string till Position-1 searching for a similar character. Whenever a similar character occurs increment counter variable by one.

Below is the implementation of the above approach:

## C++

 `// CPP program to find the number of occurrences``// of a character at position P upto p-1``#include ``using` `namespace` `std;` `// Function to find the number of occurrences``// of a character at position P upto p-1``int` `Occurrence(string s, ``int` `position)``{``    ``int` `count = 0;``    ``for` `(``int` `i = 0; i < position - 1; i++)``        ``if` `(s[i] == s[position - 1])``            ``count++;` `    ``// Return the required count``    ``return` `count;``}` `// Driver code``int` `main()``{``    ``string s = ``"ababababab"``;` `    ``int` `p = 9;` `    ``// Function call``    ``cout << Occurrence(s, p);` `    ``return` `0;``}`

## Java

 `// Java program to find the number of occurrences``// of a character at position P upto p-1``class` `GFG``{` `// Function to find the number of occurrences``// of a character at position P upto p-1``static` `int` `Occurrence(String s, ``int` `position)``{``    ``int` `count = ``0``;``    ``for` `(``int` `i = ``0``; i < position - ``1``; i++)``        ``if` `(s.charAt(i) == s.charAt(position - ``1``))``            ``count++;` `    ``// Return the required count``    ``return` `count;``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``String s = ``"ababababab"``;` `    ``int` `p = ``9``;` `    ``// Function call``    ``System.out.println(Occurrence(s, p));``}``}` `// This code is contributed by 29AjayKumar`

## Python3

 `# Python3 program to find the``# number of occurrences of``# a character at position P upto p-1` `# Function to find the number of occurrences``# of a character at position P upto p-1``def` `Occurrence(s, position):``    ``count ``=` `0``    ``for` `i ``in` `range``(position ``-` `1``):``        ``if` `(s[i] ``=``=` `s[position ``-` `1``]):``            ``count ``+``=` `1` `    ``# Return the required count``    ``return` `count` `# Driver code``s ``=` `"ababababab"``;` `p ``=` `9` `# Function call``print``(Occurrence(s, p))` `# This code is contributed by Mohit Kumar`

## C#

 `// C# program to find the number of occurrences``// of a character at position P upto p-1``using` `System;``    ` `class` `GFG``{` `// Function to find the number of occurrences``// of a character at position P upto p-1``static` `int` `Occurrence(String s, ``int` `position)``{``    ``int` `count = 0;``    ``for` `(``int` `i = 0; i < position - 1; i++)``        ``if` `(s[i] == s[position - 1])``            ``count++;` `    ``// Return the required count``    ``return` `count;``}` `// Driver code``public` `static` `void` `Main(String[] args)``{``    ``String s = ``"ababababab"``;` `    ``int` `p = 9;` `    ``// Function call``    ``Console.WriteLine(Occurrence(s, p));``}``}` `// This code is contributed by PrinciRaj1992`

## Javascript

 ``

Output:

`4`

Time Complexity : O(N) for each query.

Efficient Approach: In case, if there are multiple such queries and we are given a unique index P for every query then an efficient approach is to use a frequency array for storing the character count in each iteration of the string.

Below is the implementation of the above approach :

## C++

 `// CPP program to find the number of occurrences``// of a character at position P upto p-1``#include ``using` `namespace` `std;` `// Function to find the number of occurrences``// of a character at position P upto p-1``int` `countOccurrence(string s, ``int` `position)``{``    ``int` `alpha[26] = { 0 }, b[s.size()] = { 0 };` `    ``// Iterate over the string``    ``for` `(``int` `i = 0; i < s.size(); i++) {``        ``// Store the Occurrence of same character``        ``b[i] = alpha[(``int``)s[i] - 97];` `        ``// Increase its frequency``        ``alpha[(``int``)s[i] - 97]++;``    ``}` `    ``// Return the required count``    ``return` `b[position - 1];``}` `// Driver code``int` `main()``{``    ``string s = ``"ababababab"``;` `    ``int` `p = 9;` `    ``// Function call``    ``cout << countOccurrence(s, p);` `    ``return` `0;``}`

## Java

 `// Java program to find the number of occurrences``// of a character at position P upto p-1``import` `java.util.*;` `class` `GFG``{` `// Function to find the number of occurrences``// of a character at position P upto p-1``static` `int` `countOccurrence(String s, ``int` `position)``{``    ``int` `[]alpha = ``new` `int``[``26``];``    ``int` `[]b = ``new` `int``[s.length()];` `    ``// Iterate over the string``    ``for` `(``int` `i = ``0``; i < s.length(); i++)``    ``{``        ``// Store the Occurrence of same character``        ``b[i] = alpha[(``int``)s.charAt(i) - ``97``];` `        ``// Increase its frequency``        ``alpha[(``int``)s.charAt(i) - ``97``]++;``    ``}` `    ``// Return the required count``    ``return` `b[position - ``1``];``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``String s = ``"ababababab"``;` `    ``int` `p = ``9``;` `    ``// Function call``    ``System.out.println(countOccurrence(s, p));``}``}` `// This code is contributed by 29AjayKumar`

## Python3

 `# Python3 program to find the number of occurrences``# of a character at position P upto p-1` `# Function to find the number of occurrences``# of a character at position P upto p-1``def` `countOccurrence(s, position):``    ``alpha ``=` `[``0``] ``*` `26``    ``b ``=` `[``0``] ``*` `len``(s)``    ` `    ``# Iterate over the string``    ``for` `i ``in` `range``(``0``, ``len``(s)):``        ` `        ``# Store the Occurrence of same character``        ``b[i] ``=` `alpha[``ord``(s[i]) ``-` `97``]` `        ``# Increase its frequency``        ``alpha[``ord``(s[i]) ``-` `97``] ``=` `alpha[``ord``(s[i]) ``-` `97``] ``+` `1` `    ``# Return the required count``    ``return` `b[position ``-` `1``]` `# Driver code``s ``=` `"ababababab"` `p ``=` `9` `# Function call``print``(countOccurrence(s, p))` `# This code is contributed by Sanjit_Prasad`

## C#

 `// C# program to find the number of occurrences``// of a character at position P upto p-1``using` `System;``    ` `class` `GFG``{` `// Function to find the number of occurrences``// of a character at position P upto p-1``static` `int` `countOccurrence(String s, ``int` `position)``{``    ``int` `[]alpha = ``new` `int``[26];``    ``int` `[]b = ``new` `int``[s.Length];` `    ``// Iterate over the string``    ``for` `(``int` `i = 0; i < s.Length; i++)``    ``{``        ``// Store the Occurrence of same character``        ``b[i] = alpha[(``int``)s[i] - 97];` `        ``// Increase its frequency``        ``alpha[(``int``)s[i] - 97]++;``    ``}` `    ``// Return the required count``    ``return` `b[position - 1];``}` `// Driver code``public` `static` `void` `Main(String[] args)``{``    ``String s = ``"ababababab"``;` `    ``int` `p = 9;` `    ``// Function call``    ``Console.WriteLine(countOccurrence(s, p));``}``}` `// This code is contributed by PrinciRaj1992`

## Javascript

 ``

Output:

`4`

My Personal Notes arrow_drop_up