Open In App

Count of sub-strings of length n possible from the given string

Given a string str and an integer N, the task is to find the number of possible sub-strings of length N.
Examples: 

Input: str = “geeksforgeeks”, n = 5 
Output:
All possible sub-strings of length 5 are “geeks”, “eeksf”, “eksfo”, 
“ksfor”, “sforg”, “forge”, “orgee”, “rgeek” and “geeks”.
Input: str = “jgec”, N = 2 
Output:

Method 1:Naive Approach

Approach:

The approach used in this code is to iterate over all possible starting positions of a substring of length N in the given string str, and count the number of valid substrings. We can check if a substring is valid by using the substr function to extract a substring of length N starting from the current position, and checking if its length is equal to N.

Implementation:




#include <bits/stdc++.h>
using namespace std;
 
int count_substrings(string str, int n) {
    int count = 0;
    for (int i = 0; i <= str.length() - n; i++) {
        string substring = str.substr(i, n);
        // check if the current substring has length n
        if (substring.length() == n) {
            count++;
        }
    }
    return count;
}
 
int main() {
    string str = "geeksforgeeks";
    int n = 5;
    cout << count_substrings(str, n) << endl;
    return 0;
}




public class CountSubstrings {
    public static int countSubstrings(String str, int n) {
        int count = 0;
        for (int i = 0; i <= str.length() - n; i++) {
            String substring = str.substring(i, i + n);
            // check if the current substring has length n
            if (substring.length() == n) {
                count++;
            }
        }
        return count;
    }
 
    public static void main(String[] args) {
        String str = "geeksforgeeks";
        int n = 5;
        System.out.println(countSubstrings(str, n));
    }
}




def count_substrings(string, n):
    count = 0
    for i in range(len(string) - n + 1):
        substring = string[i:i+n]
        # check if the current substring has length n
        if len(substring) == n:
            count += 1
    return count
 
str = "geeksforgeeks"
n = 5
print(count_substrings(str, n))




using System;
 
class GFG
{
    // Function to count the number of substrings of length n in a given string.
    static int CountSubstrings(string str, int n)
    {
        int count = 0;
         
        // Loop through the string starting from index 0 and going up to length - n.
        for (int i = 0; i <= str.Length - n; i++)
        {
            // Get the substring of length n starting at index i.
            string substring = str.Substring(i, n);
             
            // Check if the current substring has length n.
            if (substring.Length == n)
            {
                count++;
            }
        }
         
        return count;
    }
 
    static void Main()
    {
        string str = "geeksforgeeks";
        int n = 5;
         
        // Call the function to count substrings and print the result.
        Console.WriteLine(CountSubstrings(str, n));
    }
}




//Javascript Code
function count_substrings(str, n) {
    let count = 0;
    for (let i = 0; i <= str.length - n; i++) {
        let substring = str.substr(i, n);
        // check if the current substring has length n
        if (substring.length === n) {
            count++;
        }
    }
    return count;
}
 
//Driver's Code
let str = "geeksforgeeks";
let n = 5;
console.log(count_substrings(str, n));

Output
9







Time Complexity: O(M*N), where M is the length of the input string str, since we iterate over N possible starting positions and extract a substring of length N each time.
Auxiliary Space: O(1), no extra space is required.

Method 2:Efficient Approach

Approach: The count of sub-strings of length n will always be len – n + 1 where len is the length of the given string. For example, if str = “geeksforgeeks” and n = 5 then the count of sub-strings having length 5 will be “geeks”, “eeksf”, “eksfo”, “ksfor”, “sforg”, “forge”, “orgee”, “rgeek” and “geeks” which is len – n + 1 = 13 – 5 + 1 = 9.
Below is the implementation of the above approach: 




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to return the count of
// possible sub-strings of length n
int countSubStr(string str, int n)
{
    int len = str.length();
    return (len - n + 1);
}
 
// Driver code
int main()
{
    string str = "geeksforgeeks";
    int n = 5;
 
    cout << countSubStr(str, n);
 
    return 0;
}




// Java implementation of the approach
import java.util.*;
 
class GFG
{
 
// Function to return the count of
// possible sub-strings of length n
static int countSubStr(String str, int n)
{
    int len = str.length();
    return (len - n + 1);
}
 
// Driver code
public static void main(String args[])
{
    String str = "geeksforgeeks";
    int n = 5;
 
    System.out.print(countSubStr(str, n));
}
}
 
// This code is contributed by mohit kumar 29




# Python3 implementation of the approach
 
# Function to return the count of
# possible sub-strings of length n
def countSubStr(string, n) :
 
    length = len(string);
    return (length - n + 1);
 
# Driver code
if __name__ == "__main__" :
 
    string = "geeksforgeeks";
    n = 5;
 
    print(countSubStr(string, n));
     
# This code is contributed by Ryuga




// C# implementation of the approach
using System;
 
class GFG
{
 
// Function to return the count of
// possible sub-strings of length n
static int countSubStr(string str, int n)
{
    int len = str.Length;
    return (len - n + 1);
}
 
// Driver code
public static void Main()
{
    string str = "geeksforgeeks";
    int n = 5;
 
    Console.WriteLine(countSubStr(str, n));
}
}
 
// This code is contributed by Code_Mech.




<script>
  // JavaScript implementation of the approach
  // Function to return the count of
  // possible sub-strings of length n
  function countSubStr(str, n) {
    var len = str.length;
    return len - n + 1;
  }
 
  // Driver code
  var str = "geeksforgeeks";
  var n = 5;
 
  document.write(countSubStr(str, n));
</script>




<?php
// PHP implementation of the approach
 
// Function to return the count of
// possible sub-strings of length n
function countSubStr($str, $n)
{
    $len = strlen($str);
    return ($len - $n + 1);
}
 
// Driver code
$str = "geeksforgeeks";
$n = 5;
 
echo(countSubStr($str, $n));
 
// This code is contributed by Code_Mech.
?>

Output
9






Time Complexity: O(1), it is a constant.
Auxiliary Space: O(1), no extra space is required.


Article Tags :