【问题标题】:concat two strings by sub-stringing with same length通过具有相同长度的子串连接两个字符串
【发布时间】:2022-02-09 14:44:36
【问题描述】:

我想连接两个字符串,通过子串长度相同,连接应该像我下面提到的那样发生 假设, 我有 str1 = raines,str2 = bowls,LENGTH 为 2,那么我的输出应该是 raboinwless。

edit: 从最左边的字母开始,从str1和str2中识别出LENGTH个字母,并将识别出的字母分别添加到输出字符串中。重复此操作,直到 str1 或 str2 或两者的剩余字母少于 LENGTH。将 str1 中剩余的字母(如果有)添加到 str2 中的剩余字母(如果有)以输出字符串。

(str1 的前两个字母是 'ra',str2 的前两个字母是 'bo',连接它们得到 'rabo',在下一个循环中,接下来的两个字母是 str1 的 'in' 和 str2 的'wl',通过连接 we '会得到'inwl',现在总输出是'raboinwl',最后我们现在从str1得到'es',从str2得到's',总输出是'raboinwless')

import java.util.Scanner;

public class practice 
{   
    //input str1 = raines
    // str2 = bowls
    // num = 2
    //expected output = raboinwless
    public static void main(String[] args) 
    {        
        Scanner input = new Scanner(System.in);
        String instr1 = input.nextLine();
        String instr2 = input.nextLine();
        int innum = input.nextInt();
        String outstr="";       
        if(innum > instr1.length() || innum > instr2.length()) {
                outstr = instr1+instr2;
                System.out.println(outstr);
        }else if(innum < instr1.length() || innum < instr2.length()) {
            String[] chunks1 = instr1.split("(?<=\\G.{" + innum + "})");
            String[] chunks2 = instr2.split("(?<=\\G.{" + innum + "})");            
            int itrCount = 0;
            if(chunks1.length > chunks2.length)
                itrCount = chunks1.length;
            else itrCount = chunks2.length;             
                        
                for(int i= 0 ; i< itrCount;i++) {
                    outstr = outstr+chunks1[i];
                    outstr = outstr+chunks2[i];                 
                }
            System.out.println(outstr);
        }
    } 
}
  • 如果我没有任何意义或我的提问方式不好,请评论或重新整理我的问题,

【问题讨论】:

  • 我不知道其他任何人,但我发现“从 str1 和 str2 中取出提到的字符串长度并将它们组合起来,然后这样做,如果下一次迭代第一个字符串的长度或者第二个字符串不匹配,它可以将剩余的字符并执行连接”不可能跟随。我也看不出它如何与示例一起使用。
  • 此外,如果您已经拥有工作代码,那么这不是一个适合提问的网站。您可以可能codereview.stackexchange.com 上提问,但您需要让问题更加清晰。
  • 不是免费的代码审查网站,如果您的代码有效,则不应将其发布在问答网站中
  • 您的实际问题是什么?您的代码无法正常工作,或者您正在寻找一种更简洁的方式来实现任务?
  • 我的代码正在运行,我想知道如何让它更干净。

标签: java


【解决方案1】:

递归版本

public static String substringZip (String str1, String str2, int n) {
    if(str1.length() < n || str2.length() < n)
        return str1 + str2;
    else
        return str1.substring(0, n) + str2.substring(0, n) + substringZip(str1.substring(n), str2.substring(n), n);
}

参数

  • str1 -> 第一个字符串
  • str2 -> 第二个字符串
  • n -> 每个循环的字符数。 if

【讨论】:

    猜你喜欢
    • 2016-01-17
    • 2017-02-14
    • 1970-01-01
    • 2018-08-09
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    相关资源
    最近更新 更多