# Number of substrings of a string

Find total number of non-empty substrings of a string with **N** characters. Here we use the word proper because we do not consider string itself as part of output.

Input : str = “abc”

Output : 6

Proper substrings are “a”, “b”, “c”, “ab”, “bc”, “abc”Input : str = “abcd”

Output : 10

Proper substrings are “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, mumber 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

## 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; ` `} ` |

*chevron_right*

*filter_none*

## 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) ` |

*chevron_right*

*filter_none*

## 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) ` |

*chevron_right*

*filter_none*

## 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) ` |

*chevron_right*

*filter_none*

## 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 ` `?> ` |

*chevron_right*

*filter_none*

**Output:**

15

## Recommended Posts:

- Number of substrings of one string present in other
- Sum of all substrings of a string representing a number | Set 1
- Number of even substrings in a string of digits
- Number of substrings divisible by 4 in a string of integers
- Number of substrings divisible by 6 in a string of integers
- Number of substrings with odd decimal value in a binary string
- Repeat substrings of the given String required number of times
- Count number of substrings of a string consisting of same characters
- Given a binary string, count number of substrings that start and end with 1.
- Rearrange the string to maximize the number of palindromic substrings
- Count the number of vowels occurring in all the substrings of given string
- Sum of all substrings of a string representing a number | Set 2 (Constant Extra Space)
- Replace two substrings (of a string) with each other
- Split the string into substrings using delimiter
- Lexicographical concatenation of all substrings of a string

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.