Number of substrings of a string
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++
// 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).
Please Login to comment...