📌  相关文章
📜  生成一个字符串,其所有K大小的子字符串都可以串联形成给定的字符串

📅  最后修改于: 2021-05-04 20:46:34             🧑  作者: Mango

给定大小为N的字符串str和整数K ,任务是生成一个字符串,其大小为K的子字符串可以串联起来形成给定的字符串。
例子:

方法:
请按照以下步骤解决问题:

  1. 我们可以清楚地观察到,通过串联长度为K的子字符串(除了第一个字符),任何子字符串的其余K-1个字符也将出现在下一个子字符串中。
  2. 因此,遍历字符串并将每个子字符串的第一个字符附加到ans ,然后忽略后面K-1个字符。
  3. 对除最后一个子字符串以外的所有子字符串重复此过程。
  4. 将最后一个子字符串的所有字符追加到ans
  5. 返回ans作为所需的解码字符串。

下面是上述方法的实现:

C++
// C++ program to generate a 
// string whose substrings of
// length K concatenates to 
// form given strings
  
#include  
using namespace std;
  
// Function to return the required 
// required string 
void decode_String(string str, 
int K)
{
    string ans = "";
    // Iterate the given string
    for (int i = 0; i < str.size(); 
    i += K)
        // Append the first 
        // character of every 
        // substring of length K
        ans += str[i];
  
    // Consider all characters 
    // from the last substring
    for(int i = str.size() - (K - 1); 
    i < str.size(); i++)
        ans += str[i];
  
    cout << ans << endl;
}
  
// Driver Program
int main()
{
    int K = 3;
    string str = "abcbcscsesesesd";
    decode_String(str, K);
}


Java
// Java program to generate a 
// string whose substrings of 
// length K concatenates to 
// form given strings 
class GFG{
      
// Function to return the required 
// required string 
public static void decode_String(String str,
                                 int K) 
{ 
    String ans = ""; 
      
    // Iterate the given string 
    for(int i = 0; 
            i < str.length(); i += K) 
         
       // Append the first 
       // character of every 
       // substring of length K 
       ans += str.charAt(i); 
      
    // Consider all characters 
    // from the last substring 
    for(int i = str.length() - (K - 1);
            i < str.length(); i++) 
       ans += str.charAt(i); 
      
    System.out.println(ans);
} 
  
// Driver code
public static void main(String[] args)
{
    int K = 3; 
    String str = "abcbcscsesesesd";  
      
    decode_String(str, K); 
}
}
  
// This code is contributed by divyeshrabadiya07


Python3
# Python3 program to generate a 
# string whose substrings of
# length K concatenates to 
# form given strings
  
# Function to return the required 
# required string 
def decode_String(st, K):
  
    ans = ""
      
    # Iterate the given string
    for i in range(0, len(st), K):
          
        # Append the first 
        # character of every 
        # substring of length K
        ans += st[i]
  
    # Consider all characters 
    # from the last substring
    for i in range(len(st) - (K - 1), len(st)):
        ans += st[i]
  
    print(ans)
  
# Driver code
if __name__ == "__main__":
      
    K = 3
    st = "abcbcscsesesesd"
      
    decode_String(st, K)
  
# This code is contributed by chitranayal


C#
// C# program to generate a string
// whose substrings of length K
// concatenates to form given strings 
using System;
  
class GFG{
      
// Function to return the required 
// required string 
public static void decode_String(String str,
                                 int K) 
{ 
    String ans = ""; 
      
    // Iterate the given string 
    for(int i = 0; 
            i < str.Length; i += K) 
              
        // Append the first 
        // character of every 
        // substring of length K
        ans += str[i]; 
      
    // Consider all characters 
    // from the last substring 
    for(int i = str.Length - (K - 1);
            i < str.Length; i++) 
        ans += str[i]; 
      
    Console.WriteLine(ans);
} 
  
// Driver code
public static void Main(String[] args)
{
    int K = 3; 
    String str = "abcbcscsesesesd"; 
      
    decode_String(str, K); 
}
}
  
// This code is contributed by Rohit_ranjan


输出:
abcsesd

时间复杂度: O(N)
辅助空间: O(1)