Java 自定义字符串划分为动态数组



我有一个字符串,我必须根据预设的长度数组进行划分,然后子字符串将进入动态数组。

例:

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() 拆分为长度值大小
    • 将每个部分添加到新数组中
  • 将旧阵列替换为新阵列
  • 打印出数组的值以显示它正在工作

通过对每次迭代执行此操作,您应该最终得到所需的结果。

现在,如果输入字符串长度与输入数组长度不

完全匹配,或者输入数组长度不按降序排列,这可能不太有效。 注意这些边缘情况是否重要。

希望这有帮助!

最新更新