Python – Frequency of K in sliced String
Last Updated :
05 Apr, 2023
Given a String, find the frequency of certain characters in the index range.
Input : test_str = ‘geeksforgeeks is best for geeks’, i = 3, j = 9, K = ‘e’
Output : 0
Explanation : No occurrence of ‘e’ between 4th [s] and 9th element
Input : test_str = ‘geeksforgeeks is best for geeks’, 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
test_str = 'geeksforgeeks is best for geeks'
print ( "The original string is : " + str (test_str))
i, j = 3 , 20
K = 'e'
slc = test_str[i : j]
res = slc.count(K)
print ( "The required Frequency : " + str (res))
|
Output
The original string is : geeksforgeeks is best for geeks
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
from collections import Counter
test_str = 'geeksforgeeks is best for geeks'
print ( "The original string is : " + str (test_str))
i, j = 3 , 20
K = 'e'
slc = test_str[i : j]
res = Counter(slc)[K]
print ( "The required Frequency : " + str (res))
|
Output
The original string is : geeksforgeeks is best for geeks
The required Frequency : 3
Time Complexity: O(n) -> (slicing)
Auxiliary Space: O(n)
Method #3: Using operator.countOf()
Python3
import operator as op
test_str = 'geeksforgeeks is best for geeks'
print ( "The original string is : " + str (test_str))
i, j = 3 , 20
K = 'e'
slc = test_str[i : j]
res = op.countOf(slc,K)
print ( "The required Frequency : " + str (res))
|
Output
The original string is : geeksforgeeks is best for geeks
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
test_str = 'geeksforgeeks is best for geeks'
print ( "The original string is : " + str (test_str))
i, j = 3 , 20
K = 'e'
res = 0
for p in range (i,j):
if (test_str[p] = = K):
res + = 1
print ( "The required Frequency : " + str (res))
|
Output
The original string is : geeksforgeeks is best for geeks
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
test_str = 'geeksforgeeks is best for geeks'
print ( "The original string is : " + str (test_str))
i, j = 3 , 20
K = 'e'
slc = test_str[i:j]
res = len (re.findall(K, slc))
print ( "The required Frequency : " + str (res))
|
Output
The original string is : geeksforgeeks is best for geeks
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
test_str = 'geeksforgeeks is best for geeks'
print ( "The original string is : " + str (test_str))
i, j = 3 , 20
K = 'e'
filtered_str = filter ( lambda x: x = = K, test_str[i:j])
res = len ( list (filtered_str))
print ( "The required Frequency : " + str (res))
|
Output
The original string is : geeksforgeeks is best for geeks
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.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...