GeeksforGeeks App
Open App
Browser
Continue

# Python – Incremental Size Chunks from Strings

Given a String, split it into incremental sizes consecutive list.

Input : test_str = ‘geekforgeeks is best’
Output : [‘g’, ‘ee’, ‘kfo’, ‘rgee’, ‘ks is’, ‘ best’]
Explanation : Characters size increasing in list.

Input : test_str = ‘geekforgeeks’
Output : [‘g’, ‘ee’, ‘kfo’, ‘rgee’, ‘ks’]
Explanation : Characters size increasing in list.

Method #1 : Using loop + slicing

In this, we perform task of getting chunks using string slicing and keep on increasing chunk size during iteration.

## Python3

 `# Python3 code to demonstrate working of``# Incremental Size Chunks from Strings``# Using loop + slicing` `# initializing string``test_str ``=` `'geekforgeeks is best for geeks'` `# printing original string``print``(``"The original string is : "` `+` `str``(test_str))` `res ``=` `[]``idx ``=` `1``while` `True``:``    ``if` `len``(test_str) > idx:``        ` `        ``# chunking``        ``res.append(test_str[``0` `: idx])``        ``test_str ``=` `test_str[idx:]``        ``idx ``+``=` `1``    ``else``:``        ``res.append(test_str)``        ``break``    ` `# printing result``print``(``"The Incremental sized Chunks : "` `+` `str``(res))`

Output

```The original string is : geekforgeeks is best for geeks
The Incremental sized Chunks : ['g', 'ee', 'kfo', 'rgee', 'ks is', ' best ', 'for gee', 'ks']```

Time Complexity: O(n)
Auxiliary Space: O(n)

Method #2 : Using generator + slicing

In this, we perform slicing as in above method, difference is that chunks are rendered using generator expression, each chunk yields at runtime in loop.

## Python3

 `# Python3 code to demonstrate working of``# Incremental Size Chunks from Strings``# Using generator + slicing` `# generator function``def` `gen_fnc(test_str):``    ``strt ``=` `0``    ``stp ``=` `1``    ``while` `test_str[strt : strt ``+` `stp]:``        ` `        ``# return chunks runtime while looping``        ``yield` `test_str[strt : strt ``+` `stp]``        ``strt ``+``=` `stp``        ``stp ``+``=` `1` `# initializing string``test_str ``=` `'geekforgeeks is best for geeks'` `# printing original string``print``(``"The original string is : "` `+` `str``(test_str))` `# calling fnc.``res ``=` `list``(gen_fnc(test_str))``    ` `# printing result``print``(``"The Incremental sized Chunks : "` `+` `str``(res))`

Output

```The original string is : geekforgeeks is best for geeks
The Incremental sized Chunks : ['g', 'ee', 'kfo', 'rgee', 'ks is', ' best ', 'for gee', 'ks']```

Time Complexity: O(n)
Space Complexity: O(n)

Method 3: Using recursion.

## Python3

 `# Python3 code to demonstrate working of``# Incremental Size Chunks from Strings``# Using recursion` `# recursive function to generate chunks``def` `recursive_fnc(test_str, res, strt``=``0``, stp``=``1``):``    ``if` `not` `test_str[strt:strt``+``stp]:``        ``return` `res``    ``else``:``        ``res.append(test_str[strt:strt``+``stp])``        ``return` `recursive_fnc(test_str, res, strt``+``stp, stp``+``1``)` `# initializing string``test_str ``=` `'geekforgeeks is best for geeks'` `# printing original string``print``(``"The original string is : "` `+` `str``(test_str))` `# calling recursive function to generate chunks``res ``=` `recursive_fnc(test_str, [])` `# printing result``print``(``"The Incremental sized Chunks : "` `+` `str``(res))`

Output

```The original string is : geekforgeeks is best for geeks
The Incremental sized Chunks : ['g', 'ee', 'kfo', 'rgee', 'ks is', ' best ', 'for gee', 'ks']```

The time complexity of this approach is also O(n^2), where n is the length of the input string.
The space complexity is O(n), as the function generates chunks one at a time and stores them in a list.

My Personal Notes arrow_drop_up