Techno Blender
Digitally Yours.

Print all Substrings of length n possible from the given String

0 28


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++

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

        cout << str.substr(i, n) << " ";

    return 0;

}

Java

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) + " ");

    }

}

Python3

str = "geeksforgeeks"

n = 3

  

for i in range(len(str) - n + 1):

    print(str[i:i + n], end = " ")

  

C#

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) + " ");

    }

}

  

Javascript

<script>

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+" ");

}

  

</script>

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(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++

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

}

Java

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 + " ");

        }

    }

}

  

Python3

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 =' ')

  

C#

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 + " ");

        }

    }

}

  

Javascript

<script>

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 + " ");

}

  

</script>

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(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:

Python3

str = "geeksforgeeks"

n = 3

substrings = [str[i:i + n] for i in range(len(str) - n + 1)]

print(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.


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++

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

        cout << str.substr(i, n) << " ";

    return 0;

}

Java

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) + " ");

    }

}

Python3

str = "geeksforgeeks"

n = 3

  

for i in range(len(str) - n + 1):

    print(str[i:i + n], end = " ")

  

C#

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) + " ");

    }

}

  

Javascript

<script>

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+" ");

}

  

</script>

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(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++

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

}

Java

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 + " ");

        }

    }

}

  

Python3

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 =' ')

  

C#

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 + " ");

        }

    }

}

  

Javascript

<script>

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 + " ");

}

  

</script>

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(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:

Python3

str = "geeksforgeeks"

n = 3

substrings = [str[i:i + n] for i in range(len(str) - n + 1)]

print(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.

FOLLOW US ON GOOGLE NEWS

Read original article here

Denial of responsibility! Techno Blender is an automatic aggregator of the all world’s media. In each content, the hyperlink to the primary source is specified. All trademarks belong to their rightful owners, all materials to their authors. If you are the owner of the content and do not want us to publish your materials, please contact us by email – [email protected]. The content will be deleted within 24 hours.
Leave a comment