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:
C++
#include <bits/stdc++.h>
using namespace std;
int countNonEmptySubstr(string str)
{
int n = str.length();
return n*(n+1)/2;
}
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;
}
int main()
{
const char * s = "abcde" ;
printf ( "%d\n" , countNonEmptySubstr(s));
return 0;
}
|
Java
import java.io.*;
public class GFG {
static int countNonEmptySubstr(String str)
{
int n = str.length();
return n * (n + 1 ) / 2 ;
}
public static void main(String args[])
{
String s = "abcde" ;
System.out.println(
countNonEmptySubstr(s));
}
}
|
Python3
def countNonEmptySubstr( str ):
n = len ( str );
return int (n * (n + 1 ) / 2 );
s = "abcde" ;
print (countNonEmptySubstr(s));
|
C#
using System;
class GFG {
static int countNonEmptySubstr( string str)
{
int n = str.Length;
return n * (n + 1) / 2;
}
public static void Main()
{
string s = "abcde" ;
Console.Write(countNonEmptySubstr(s));
}
}
|
PHP
<?php
function countNonEmptySubstr( $str )
{
$n = strlen ( $str );
return $n * ( $n + 1) / 2;
}
$s = "abcde" ;
echo countNonEmptySubstr( $s );
?>
|
Javascript
<script>
function countNonEmptySubstr(str)
{
let n = str.length;
return n * (n + 1) / 2;
}
let s = "abcde" ;
document.write(countNonEmptySubstr(s));
</script>
|
Complexity Analysis:
- Time Complexity: O(1).
- Auxiliary Space: O(1).
Feeling lost in the world of random DSA topics, wasting time without progress? It's time for a change! Join our DSA course, where we'll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 geeks!
Last Updated :
09 May, 2023
Like Article
Save Article