我有一个字符串,我必须根据预设的长度数组进行划分,然后子字符串将进入动态数组。
例:
S = 101010101011001100
传递 1:数组 = ("10101010"、"11001100")
传递 2:数组 =("
1010"、"1010"、"1100"、"1100")传递 3:数组 = ("10"、"10"、"10"、"10"、"11"、"00"、"11"、"00")等等....
我尝试过使用split(),矢量,子字符串等。它没有给我想要的结果。
由于数组的大小也随着每次传递而增加,子字符串也类似地增加,因此我无法理解代码中实际完成的除法。如果有人能帮助我了解如何去做,那将非常有帮助。提前谢谢。
你可以做
public static void divideAndPrint(String... strs) {
String[] array = new String[strs.length*2];
for(int i = 0; i < strs.length; i++) {
array[i*2] = strs[i].substring(0,strs[i].length()/2);
array[i*2+1] = strs[i].substring(strs[i].length()/2);
}
System.out.println(Arrays.toString(array));
if (array[0].length() > 1)
divideAndPrint(array);
}
divideAndPrint("1010101010110011");
指纹
[10101010, 10110011]
[1010, 1010, 1011, 0011]
[10, 10, 10, 10, 10, 11, 00, 11]
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1]
为此,首先将输入的"S"放入单个元素数组中:
Input Array = { "101010101011001100" }
现在你要做的是遍历你的输入长度数组。 然后检查数组中的第一个元素是否短于当前长度值,然后执行以下操作:
- 创建新阵列
- 对于旧数组中的每个元素,
- 使用 strValue.substring() 拆分为长度值大小
- 将每个部分添加到新数组中
- 将旧阵列替换为新阵列
- 打印出数组的值以显示它正在工作
通过对每次迭代执行此操作,您应该最终得到所需的结果。
现在,如果输入字符串长度与输入数组长度不完全匹配,或者输入数组长度不按降序排列,这可能不太有效。 注意这些边缘情况是否重要。
希望这有帮助!