Arrays 如果输入为a1bc2def3,则输出应为abcbcdefdef
如果给定输入为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
请提供实现此目的的算法或代码。我的建议是:
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();
}