具有不同后续字符的字符串的连续子段
给定长度为L的字符串str和一个整数N ,任务是形成总共(L / N)个包含不同后续字符的字符串的连续子段。
注意:整数N将是字符串长度的一个因子,即L 。
例子:
Input: str = “geeksforgeeksgfg”, N = 4
Output:
gek
sfor
gek
sgf
The length of “geeksforgeeksgfg” is 16, therefore there will be 4 subsegments.
The first subsegment will contain the characters g, e, e and k but the alphabet ‘e’ is repeated,
So we discard one ‘e’. Therefore, the final subsegment will be “gek”.
Similarly, the other three subsegments will be “sfor”, “gek” and “sgf”.
Each subsegment should have subsequent distinct characters.
Input: str = “aabdekfgf”, N = 3
Output:
ab
dek
fg
方法:每次在新的子段上开始迭代时都会创建一个数组。这些元素以序列的形式存储在该数组中。如果数组中已经存在任何元素,则不会将其推送到数组中。
下面是上述方法的实现:
CPP
// C++ implementation of the approach
#include
using namespace std;
// Function that prints the segments
void sub_segments(string str, int n)
{
int l = str.length();
for (int x = 0; x < l; x += n)
{
string newlist = str.substr(x, n);
// New array for every iteration
list arr;
// Iterator for new array
list::iterator it;
for(auto y:newlist)
{
it = find(arr.begin(), arr.end(), y);
// Check if iterator points to end or not
if(it == arr.end())
arr.push_back(y);
}
for(auto y:arr)
cout << y;
cout << endl;
}
}
// Driver code
int main()
{
string str = "geeksforgeeksgfg";
int n = 4;
sub_segments(str, n);
}
// This code is contributed by Sanjit_Prasad
Java
// Java implementation of the approach
import java.util.*;
class GFG
{
// Function that prints the segments
static void sub_segments(String str, int n)
{
int l = str.length();
for (int x = 0; x < l; x += n)
{
String newlist = str.substring(x, x + n);
// New array for every iteration
List arr = new ArrayList();
for (char y : newlist.toCharArray())
{
// Check if the character is in the array
if (!arr.contains(y))
arr.add(y);
}
for (char y : arr)
System.out.print(y);
System.out.println();
}
}
// Driver code
public static void main(String[] args)
{
String str = "geeksforgeeksgfg";
int n = 4;
sub_segments(str, n);
}
}
// This code is contributed by Rajput-Ji
Python3
# Python3 implementation of the approach
# Function that prints the segments
def sub_segments (string, n):
l = len (string)
for x in range (0, l, n):
newlist = string[x : x + n]
# New array for every iteration
arr = []
for y in newlist:
# Check if the character is in the array
if y not in arr:
arr.append (y)
print (''.join (arr))
# Driver code
string = "geeksforgeeksgfg"
n = 4
sub_segments (string, n)
C#
// C# implementation of the approach
using System;
using System.Collections.Generic;
class GFG
{
// Function that prints the segments
static void sub_segments(String str, int n)
{
int l = str.Length;
for (int x = 0; x < l; x += n)
{
String newlist = str.Substring(x, n);
// New array for every iteration
List arr = new List();
foreach (char y in newlist.ToCharArray())
{
// Check if the character is in the array
if (!arr.Contains(y))
arr.Add(y);
}
foreach (char y in arr)
Console.Write(y);
Console.WriteLine();
}
}
// Driver code
public static void Main(String[] args)
{
String str = "geeksforgeeksgfg";
int n = 4;
sub_segments(str, n);
}
}
// This code is contributed by Rajput-Ji
Javascript
gek
sfor
gek
sgf