Find total number of non-empty substrings of a string with N characters.
Input : str = “abc”
Output : 6
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?
- Number of substrings of length one is n (We can choose any of the n characters)
- Number of substrings of length two is n-1 (We can choose any of the n-1 pairs formed by adjacent)
- Number of substrings of length three is n-2
(We can choose any of the n-2 triplets formed by adjacent) - 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:
// 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;
} |
#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 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 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# 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 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 ?> |
<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> |
15
Complexity Analysis:
- Time Complexity: O(1).
- Auxiliary Space: O(1).