Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如果输入为a1bc2def3,则输出应为abcbcdefdef_Arrays_String_Algorithm_Data Structures_Linked List - Fatal编程技术网

Arrays 如果输入为a1bc2def3,则输出应为abcbcdefdef

Arrays 如果输入为a1bc2def3,则输出应为abcbcdefdef,arrays,string,algorithm,data-structures,linked-list,Arrays,String,Algorithm,Data Structures,Linked List,如果给定输入为a1bc2def3,则输出应为ABCBCDEFDEF 无论数字何时出现,我们都应该重复前面的子字符串多次 请提供实现此目的的算法或代码。我的建议是: 尝试使用正则表达式,以便获得数字和字符数组 然后将数组中的数字可解析元素转换为整数 在该循环之后,使用数组的索引附加数组字符的n倍 然后打印最终结果 例子: publicstaticvoidmain(字符串[]args){ 字符串stringToProcess=“a1bc2def3”; String[]regexSplitted=st

如果给定输入为a1bc2def3,则输出应为ABCBCDEFDEF

无论数字何时出现,我们都应该重复前面的子字符串多次


请提供实现此目的的算法或代码。

我的建议是:

  • 尝试使用正则表达式,以便获得数字和字符数组
  • 然后将数组中的数字可解析元素转换为整数
  • 在该循环之后,使用数组的索引附加数组字符的n倍
  • 然后打印最终结果
  • 例子:
    publicstaticvoidmain(字符串[]args){
    字符串stringToProcess=“a1bc2def3”;
    
    String[]regexSplitted=stringToProcess.split(“(?这里是另一种不依赖regex的方法

    public String splitRepeat(String str)
    {
      StringBuilder out = new StringBuilder();
    
      boolean number = false;
      for(int i=0,j=0,k=0; i<=str.length(); i++)
      {
        if(i==str.length() || Character.isDigit(str.charAt(i)) != number)
        {
          if(number)
          {
            for(int r = Integer.parseInt(str.substring(j, i)); r>0; r--)
            {
              out.append(str.substring(k, j));
            }
          }
          else 
          {
            k=j;
          }
          j=i;
          number = !number;
        }               
      }
      return out.toString();
    }
    
    publicstringsplitrepeat(stringstr)
    {
    StringBuilder out=新的StringBuilder();
    布尔数=假;
    对于(inti=0,j=0,k=0;i0;r--)
    {
    out.append(str.substring(k,j));
    }
    }
    其他的
    {
    k=j;
    }
    j=i;
    数字=!数字;
    }               
    }
    return out.toString();
    }
    
    先看看你是否能自己想出一些东西,然后告诉我们,还有哪里有问题。为什么答案是abcbcdefdef而不是abcbcdefdef?你需要付出一些努力。我们不是代码编写服务。
    public String splitRepeat(String str)
    {
      StringBuilder out = new StringBuilder();
    
      boolean number = false;
      for(int i=0,j=0,k=0; i<=str.length(); i++)
      {
        if(i==str.length() || Character.isDigit(str.charAt(i)) != number)
        {
          if(number)
          {
            for(int r = Integer.parseInt(str.substring(j, i)); r>0; r--)
            {
              out.append(str.substring(k, j));
            }
          }
          else 
          {
            k=j;
          }
          j=i;
          number = !number;
        }               
      }
      return out.toString();
    }