Print all Substrings of length n possible from the given String
Last Updated :
31 Mar, 2023
Given a string str and an integer N, the task is to print all possible sub-strings of length N.
Examples:
Input: str = “geeksforgeeks”, N = 3
Output: gee eek eks ksf sfo for org rge gee eek eks
Explanations: All possible sub-strings of length 3 are “gee”, “eek”, “eks”, “ksf”, “sfo”, “for”, “org”, “rge”, "gee", "eek" and “eks”.
Input: str = “GFG”, N = 2
Output: GF FG
Explanations: All possible sub-strings of length 2 are “GF”, “FG”
Method 1: Using slicing
Approach: To solve the problem follow the below steps:
- Initialize a variable 'n' to the desired length of the substrings.
- Use a for loop to iterate through the characters of the original string, starting from the first character.
- In each iteration of the loop, use slicing to extract a substring of length 'n' from the original string, starting from the current character. The slicing can be done by using the syntax 'string[start:end]' where the start and end are the indices of the first and last character of the substring, respectively.
- In each iteration, the variable 'i' will be the starting index of the substring, and 'i + n' will be the ending index of the substring, so the substring can be extracted by using the slicing syntax 'string[i: i + n]'.
- Print or store the extracted substring for further processing.
- Repeat the process for all characters in the original string.
Below is the implementation of the above approach:
C++
// CPP implementation of the approach
#include <iostream>
#include <string.h>
using namespace std;
// Drivers code
int main()
{
string str = "geeksforgeeks";
int n = 3;
for (int i = 0; i < str.length() - n + 1; i++)
cout << str.substr(i, n) << " ";
return 0;
}
Java
// Java implementation of the approach
import java.util.*;
class GFG {
public static void main(String args[])
{
String str = "geeksforgeeks";
int n = 3;
for (int i = 0; i < str.length() - n + 1; i++)
System.out.print(str.substring(i, i + n) + " ");
}
}
// This code is contributed by Susobhan Akhuli
Python3
# Python implementation of the approach
str = "geeksforgeeks"
n = 3
for i in range(len(str) - n + 1):
print(str[i:i + n], end = " ")
# This code is contributed by Susobhan Akhuli
C#
// C# implementation of the approach
using System;
class MainClass {
public static void Main(string[] args)
{
string str = "geeksforgeeks";
int n = 3;
for (int i = 0; i < str.Length - n + 1; i++)
Console.Write(str.Substring(i, n) + " ");
}
}
// This code is contributed by Susobhan Akhuli
JavaScript
<script>
// JavaScript implementation of the approach
let str = "geeksforgeeks";
let n = 3;
for (let i = 0; i < str.length - n + 1; i++) {
let substring = str.substring(i, i+n);
document.write(substring+" ");
}
// This code is contributed by Susobhan Akhuli
</script>
Outputgee eek eks ksf sfo for org rge gee eek eks
Time Complexity: O(|str|*n), where |str| is the length of the string
Auxiliary Space: O(n)
Method 2: Using a for loop
Approach: To solve the problem follow the below steps:
- Initialize a variable 'n' to the desired length of the substrings.
- Use a for loop to iterate through the characters of the original string, starting from the first character.
- In each iteration of the outer loop, initialize an empty variable 'substring' to store the extracted substring.
- Use a nested for loop to iterate through the next 'n' characters of the original string, starting from the current character.
- In each iteration of the inner loop, add the current character to the 'substring' variable.
- After the inner loop finishes, print or store the extracted substring for further processing.
- Repeat the process for all characters in the original string.
Below is the implementation of the above approach:
C++
// CPP implementation of the approach
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
string str = "geeksforgeeks";
int n = 3;
for (int i = 0; i < str.length() - n + 1; i++) {
string substring = "";
for (int j = i; j < i + n; j++)
substring += str[j];
cout << substring << " ";
}
return 0;
}
// This code is contributed by Susobhan Akhuli
Java
// Java implementation of the approach
import java.util.*;
public class GFG {
public static void main(String[] args)
{
String str = "geeksforgeeks";
int n = 3;
for (int i = 0; i < str.length() - n + 1; i++) {
String substring = "";
for (int j = i; j < i + n; j++)
substring += str.charAt(j);
System.out.print(substring + " ");
}
}
}
// This code is contributed by Susobhan Akhuli
Python3
# Python implementation of the approach
str = "geeksforgeeks"
n = 3
for i in range(len(str) - n + 1):
substring = ""
for j in range(i, i + n):
substring += str[j]
print(substring, end =' ')
# This code is contributed by Susobhan Akhuli
C#
// C# implementation of the approach
using System;
class Program {
static void Main(string[] args)
{
string str = "geeksforgeeks";
int n = 3;
for (int i = 0; i < str.Length - n + 1; i++) {
string substring = "";
for (int j = i; j < i + n; j++)
substring += str[j];
Console.Write(substring + " ");
}
}
}
// This code is contributed by Susobhan Akhuli
JavaScript
<script>
// JavaScript implementation of the approach
var str = "geeksforgeeks";
var n = 3;
for (let i = 0; i < str.length - n + 1; i++) {
var substring = str[i];
for (let j = i+1; j < i + n; j++)
substring += str[j];
document.write(substring + " ");
}
// This code is contributed by Susobhan Akhuli
</script>
Outputgee eek eks ksf sfo for org rge gee eek eks
Time Complexity: O(|str|*n), where |str| is the length of the string
Auxiliary Space: O(n)
Method 3: Using list comprehension (Only for Python)
Approach: To solve the problem follow the below steps:
- Initialize a variable 'n' to the desired length of the substrings.
- Use a list comprehension to iterate through the characters of the original string and extract substrings of length 'n' in one line.
- The list comprehension uses the slicing syntax 'string[start:end]' where the start and end are the indices of the first and last character of the substring, respectively.
- The variable 'i' will be the starting index of the substring and 'i+n' will be the ending index of the substring, so the substring can be extracted by using the slicing syntax 'string[i:i+n]' inside the list comprehension.
- Assign the output of the list comprehension to a variable e.g. substrings = [string[i:i+n] for i in range(len(string) - n + 1)]
- Then you can print or access individual substrings from the list by indexing.
Below is the implementation of the above approach:
C++
#include <iostream>
#include <vector>
using namespace std;
int main() {
// C++ implementation of the approach
string str = "geeksforgeeks";
int n = 3;
vector<string> substrings;
for (int i = 0; i <= str.length() - n; i++) {
substrings.push_back(str.substr(i, n));
}
for (auto s : substrings) {
cout << s << " ";
}
cout << endl;
return 0;
}
Java
/*package whatever //do not write package name here */
import java.util.*;
class GFG {
public static void main (String[] args) {
//Java implementation of the approach
String str = "geeksforgeeks";
int n = 3;
List<String> substrings = new ArrayList<>();
for (int i = 0; i <= str.length() - n; i++) {
substrings.add(str.substring(i, i + n));
}
System.out.println(substrings); }
}
Python3
# Python implementation of the approach
str = "geeksforgeeks"
n = 3
substrings = [str[i:i + n] for i in range(len(str) - n + 1)]
print(substrings)
# This code is contributed by Susobhan Akhuli
JavaScript
// JavaScript implementation of the approach
let str = "geeksforgeeks";
let n = 3;
let substrings = [];
for (let i = 0; i <= str.length - n; i++) {
substrings.push(str.slice(i, i + n));
}
console.log(substrings);
// This code is contributed by codebraxnzt
C#
using System;
using System.Collections.Generic;
class GFG {
static void Main(string[] args) {
// C# implementation of the approach
string str = "geeksforgeeks";
int n = 3;
List<string> substrings = new List<string>();
for (int i = 0; i <= str.Length - n; i++) {
substrings.Add(str.Substring(i, n));
}
Console.WriteLine(string.Join(", ", substrings));
}
}
Output['gee', 'eek', 'eks', 'ksf', 'sfo', 'for', 'org', 'rge', 'gee', 'eek', 'eks']
Time Complexity: O(|str|*n), where |str| is the length of the string
Auxiliary Space: O(|str|*n)
N.B.: It is important to note that the above approach will only work if the length of the string is greater than n, otherwise it will throw index out of range error.
Similar Reads
All possible strings of any length that can be formed from a given string
Given a string of distinct characters, print all possible strings of any length that can be formed from given string characters. Examples: Input: abcOutput: a b c abc ab ac bc bac bca cb ca ba cab cba acbInput: abcdOutput: a b ab ba c ac ca bc cb abc acb bac bca cab cba d ad da bd db abd adb bad bda
10 min read
Min Length String with All Substrings of Size N
Given two integers n and k, your task is to find a string of minimum length to contain all possible strings of size n as a substring. The characters of the string should be integers ranging from 0 to k - 1. Examples: Input: n = 2, k = 2Output: 00110Explanation: Allowed characters are from 0 to k-1 (
7 min read
Find the longest Substring of a given String S
Given a string S of length, N. Find the maximum length of any substring of S such that, the bitwise OR of all the characters of the substring is equal to the bitwise OR of the remaining characters of the string. If no such substring exists, print -1. Examples: Input: S = "2347"Output: 3?Explanation:
10 min read
Print all possible strings of length k that can be formed from a set of n characters
Given a set of characters and a positive integer k, print all possible strings of length k that can be formed from the given set. Examples: Input: set[] = {'a', 'b'}, k = 3 Output: aaa aab aba abb baa bab bba bbb Input: set[] = {'a', 'b', 'c', 'd'}, k = 1 Output: a b c d For a given set of size n, t
6 min read
Number of ways to form a given String from the given set of Strings
Given a string str and an array of strings dictionary[], the task is to find the number of ways str can be formed as a concatenation of strings (any number of times) in a dictionary[]. Examples: Input: str = abab, dictionary[] = { a, b, ab }Output: 4Explanation: There are 4 ways to form string str a
15+ min read
Minimum length of string having all permutation of given string.
Given a string [Tex]S [/Tex]where [Tex]1\leq length\; of\; S\leq 26 [/Tex]. Assume that all the characters in [Tex]S [/Tex]are unique. The task is to compute the minimum length of a string which consists of all the permutations of the given string in any order. Note: All permutations must be present
4 min read
Find the Longest Non-Prefix-Suffix Substring in the Given String
Given a string s of length n. The task is to determine the longest substring t such that t is neither the prefix nor the suffix of string s, and that substring must appear as both prefix and suffix of the string s. If no such string exists, print -1. Example: Input: s = "fixprefixsuffix"Output: fix
7 min read
Lexicographically all Shortest Palindromic Substrings from a given string
Given a string s of size N. The task is to find lexicographically all the shortest palindromic substrings from the given string. Examples: Input: s= "programming" Output: a g i m n o p r Explanation: The Lexicographical shortest palindrome substring for the word "programming" will be the single char
4 min read
K-th lexicographically smallest unique substring of a given string
Given a string S. The task is to print the K-th lexicographically the smallest one among the different substrings of s.A substring of s is a string obtained by taking out a non-empty contiguous part in s. For example, if s = ababc, a, bab and ababc are substrings of s, while ac, z, and an empty stri
5 min read
Sum of all possible strings obtained by removal of non-empty substrings
Given numerical string str consisting of N integers, the task is to find the sum of all possible resulting strings after removing non-empty substrings. Examples: Input: str = "205"Output: 57Explanation: Substrings that can be removed are "2", "0", "5", "20", "05", "205". The resultant strings are "0
8 min read