Given a String, find the frequency of certain characters in the index range.
Input : test_str = ‘neveropen is best for neveropen’, i = 3, j = 9, K = ‘e’
Output : 0
Explanation : No occurrence of ‘e’ between 4th [s] and 9th elementInput : test_str = ‘neveropen is best for neveropen’, i = 0, j = 9, K = ‘e’
Output : 2
Explanation : e present as 2nd and 3rd element.
Method #1: Using slicing and count()
In this, we perform slicing of required string using slice operation, then count() is used to get count of K in that sliced String.
Python3
# Python3 code to demonstrate working of # Frequency of K in sliced String # Using slicing + count() # initializing strings test_str = 'neveropen is best for neveropen' # printing original string print ( "The original string is : " + str (test_str)) # initializing i, j i, j = 3 , 20 # initializing K K = 'e' # slicing String slc = test_str[i : j] # using count() to get count of K res = slc.count(K) # printing result print ( "The required Frequency : " + str (res)) |
The original string is : neveropen is best for neveropen The required Frequency : 3
Time complexity: O(n), where n is the length of the sliced string, as the code needs to traverse the entire sliced string to count the frequency of K.
Auxiliary space: O(1), as the code, only uses a constant amount of memory regardless of the length of the input string.
Method #2 : Using Counter() + slicing
In this, we perform the task of getting count using Counter(), and slicing is used to perform slice of ranges.
Python3
# Python3 code to demonstrate working of # Frequency of K in sliced String # Using Counter() + slicing from collections import Counter # initializing strings test_str = 'neveropen is best for neveropen' # printing original string print ( "The original string is : " + str (test_str)) # initializing i, j i, j = 3 , 20 # initializing K K = 'e' # slicing String slc = test_str[i : j] # Counter() is used to get count res = Counter(slc)[K] # printing result print ( "The required Frequency : " + str (res)) |
The original string is : neveropen is best for neveropen The required Frequency : 3
Time Complexity: O(n) -> (slicing)
Auxiliary Space: O(n)
Method #3: Using operator.countOf()
Python3
# Python3 code to demonstrate working of # Frequency of K in sliced String # Using slicing + operator.countOf() import operator as op # initializing strings test_str = 'neveropen is best for neveropen' # printing original string print ( "The original string is : " + str (test_str)) # initializing i, j i, j = 3 , 20 # initializing K K = 'e' # slicing String slc = test_str[i : j] # using operator.countOf() to get count of K res = op.countOf(slc,K) # printing result print ( "The required Frequency : " + str (res)) |
The original string is : neveropen is best for neveropen The required Frequency : 3
Time Complexity: O(N), where n is the length of the given string
Auxiliary Space: O(N)
Method #4 : Using for loop
Python3
# Python3 code to demonstrate working of # Frequency of K in sliced String # initializing strings test_str = 'neveropen is best for neveropen' # printing original string print ( "The original string is : " + str (test_str)) # initializing i, j i, j = 3 , 20 # initializing K K = 'e' res = 0 for p in range (i,j): if (test_str[p] = = K): res + = 1 # printing result print ( "The required Frequency : " + str (res)) |
The original string is : neveropen is best for neveropen The required Frequency : 3
Time Complexity: O(N), where n is the length of the given string
Auxiliary Space: O(N)
Method #5: Using regex findall()
This program aims to count the frequency of a given character K in a sliced string slc of the input string test_str. It does so by using the re.findall() method from the re module to find all occurrences of the character K in the sliced string slc, and then assigning the length of the resulting list to the res variable. Finally, the program prints the frequency of character K in the sliced string slc.
Step-by-step approach:
- Import the re module to work with regular expressions.
- Initialize the test_str variable with the input string.
- Print the original string using the print() function.
- Initialize variables i and j to slice the string. The slice will be from index i up to but not including index j.
- Initialize the K variable with the character whose frequency we want to count.
- Slice the input string using string slicing notation and assign it to the slc variable.
- Use the findall() method from the re module to find all occurrences of the character K in the sliced string slc.
- Assign the length of the list returned by findall() to the res variable.
- Print the frequency of character K in the sliced string slc.
Below is the implementation of the above approach:
Python3
import re # initializing strings test_str = 'neveropen is best for neveropen' # printing original string print ( "The original string is : " + str (test_str)) # initializing i, j i, j = 3 , 20 # initializing K K = 'e' # slicing String slc = test_str[i:j] # using regex findall() to get count of K res = len (re.findall(K, slc)) # printing result print ( "The required Frequency : " + str (res)) |
The original string is : neveropen is best for neveropen The required Frequency : 3
Time Complexity: O(n), where n is the length of the sliced string.
Auxiliary Space: O(m), where m is the number of matches found by findall().
Method #6: Using the built-in function filter() with lambda function
Step-by-step approach:
- Define a lambda function that takes a character as input and returns True if it’s equal to K, False otherwise.
- Use the filter() function to filter out the characters in the sliced string that satisfy the condition in the lambda function.
- Find the length of the resulting filtered object, which gives the frequency of K in the sliced string.
Below is the implementation of the above approach:
Python3
# Python3 code to demonstrate working of # Frequency of K in sliced String # initializing strings test_str = 'neveropen is best for neveropen' # printing original string print ( "The original string is : " + str (test_str)) # initializing i, j i, j = 3 , 20 # initializing K K = 'e' # using filter() with lambda function to count frequency filtered_str = filter ( lambda x: x = = K, test_str[i:j]) res = len ( list (filtered_str)) # printing result print ( "The required Frequency : " + str (res)) |
The original string is : neveropen is best for neveropen The required Frequency : 3
Time complexity: O(n), where n is the length of the sliced string.
Auxiliary space: O(k), where k is the number of occurrences of K in the sliced string.