Open In App

Number of substrings of a string

Improve
Improve
Like Article
Like
Save
Share
Report

Find total number of non-empty substrings of a string with N characters. 

Input : str = “abc” 
Output :
Every substring of the given string : “a”, “b”, “c”, “ab”, “bc”, “abc”

Input : str = “abcd” 
Output : 10 
Every substring of the given string : “a”, “b”, “c”, “d”, “ab”, “bc”, “cd”, “abc”, “bcd” and “abcd”

Count of non-empty substrings is n*(n+1)/2
If we include empty string also as substring, the count becomes n*(n+1)/2 + 1

How does above formula work?  

  1. Number of substrings of length one is n (We can choose any of the n characters)
  2. Number of substrings of length two is n-1 (We can choose any of the n-1 pairs formed by adjacent)
  3. Number of substrings of length three is n-2 
    (We can choose any of the n-2 triplets formed by adjacent)
  4. In general, number of substrings of length k is n-k+1 where 1 <= k <= n

Total number of substrings of all lengths from 1 to n = 
n + (n-1) + (n-2) + (n-3) + … 2 + 1 
= n * (n + 1)/2

Implementation:

C++




// CPP program to count number of substrings
// of a string
#include <bits/stdc++.h>
using namespace std;
 
int countNonEmptySubstr(string str)
{
   int n = str.length();
   return n*(n+1)/2;
}
 
// driver code
int main()
{
    string s = "abcde";
    cout << countNonEmptySubstr(s);
    return 0;
}


C




#include <stdio.h>
#include <string.h>
 
int countNonEmptySubstr(const char* str)
{
    int n = strlen(str);
    return n * (n + 1) / 2;
}
 
// driver code
int main()
{
    const char* s = "abcde";
    printf("%d\n", countNonEmptySubstr(s));
    return 0;
}


Java




// Java program to count number of substrings
// of a string
import java.io.*;
 
public class GFG {
     
    static int countNonEmptySubstr(String str)
    {
        int n = str.length();
        return n * (n + 1) / 2;
    }
     
    // Driver code
    public static void main(String args[])
    {
        String s = "abcde";
        System.out.println(
                  countNonEmptySubstr(s));
    }
}
 
// This code is contributed
// by Manish Shaw (manishshaw1)


Python3




# Python3 program to count number
# of substrings of a string
 
def countNonEmptySubstr(str):
    n = len(str);
    return int(n * (n + 1) / 2);
 
# driver code
s = "abcde";
print (countNonEmptySubstr(s));
 
# This code is contributed by
# Manish Shaw (manishshaw1)


C#




// C# program to count number
// of substrings of a string
using System;
class GFG {
     
    static int countNonEmptySubstr(string str)
    {
        int n = str.Length;
        return n * (n + 1) / 2;
    }
     
    // Driver Code
    public static void Main()
    {
        string s = "abcde";
        Console.Write(countNonEmptySubstr(s));
    }
}
 
// This code is contributed
// by Manish Shaw (manishshaw1)


PHP




<?php
// PHP program to count number
// of substrings of a string
 
function countNonEmptySubstr($str)
{
    $n = strlen($str);
    return $n * ($n + 1) / 2;
}
 
// Driver Code
$s = "abcde";
echo countNonEmptySubstr($s);
     
// This code is contributed by Anuj_67
?>


Javascript




<script>
 
// JavaScript program to count number of substrings
// of a string
function countNonEmptySubstr(str)
    {
        let n = str.length;
        return n * (n + 1) / 2;
    }
     
    // Driver code
        let s = "abcde";
        document.write(countNonEmptySubstr(s));
 
 
// This code is contributed shivanisinghss2110
 
</script>


Output: 

15

 

Complexity Analysis:

  • Time Complexity: O(1).
  • Auxiliary Space: O(1).


Last Updated : 09 May, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads