分割数组

本文提供了一个Java程序示例,展示了如何将一个整数数组分成两个子数组:一个是基于数组下标的奇偶性进行分组,另一个则是根据数组元素本身的奇偶性进行划分。通过迭代遍历和条件判断实现了这一功能,并输出了分组结果。

public class SplitArrayFunction {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
//  Scanner sc=new Scanner(System.in);
//  System.out.println("输入10个数组元素: ");
//  int [] b=new int[10];
//  for(int i=0;i<10;i++){
//   b[i]=sc.nextInt();
//  }
  int[] a = { 1, 11, 3, 4, 5, 6, 7, 2, 9 ,8};
  System.out.println("将原数组按下标分为奇数下标组和偶数下标组: ");
  split(a);
  System.out.println();
  System.out.println("将原数组按数组元素是否为奇数偶数分为奇数组和偶数组: ");
  split2(a);
 }

 public static void split(int[] aArray) {
  int[] oddArray = new int[aArray.length];
  int[] evenArray = new int[aArray.length];
  int m = 0;
  int n = 0;
  for (int i = 0; i < aArray.length; i++) {
   if (i % 2 == 0) {
    oddArray[m++] = aArray[i];
   } else {
    evenArray[n++] = aArray[i];
   }
  }
  System.out.println("偶数下标组为");
  for (int i : oddArray) {
   if (i != 0) {
    System.out.print(i + " ");
   }
  }
  System.out.println();
  System.out.println("奇数下标组为");
  for (int i : evenArray) {
   if (i != 0) {
    System.out.print(i + " ");
   }
  }
 }

 public static void split2(int[] aArray) {
  int[] oddArray = new int[aArray.length];
  int[] evenArray = new int[aArray.length];
  int m = 0;
  int n = 0;
  for (int i = 0; i < aArray.length; i++) {
   if (aArray[i] % 2 == 0) {
    oddArray[m++] = aArray[i];
   } else {
    evenArray[n++] = aArray[i];
   }
  }
  System.out.println("偶数组为");
  for (int i : oddArray) {
   if (i != 0) {
    System.out.print(i + " ");
   }
  }
  System.out.println();
  System.out.println("奇数组为");
  for (int i : evenArray) {
   if (i != 0) {
    System.out.print(i + " ");
   }
  }
 }
}

### Java 中分割数组的方法或实现方式 在 Java 中,`String.split()` 方法主要用于字符串的拆分操作。然而,在处理数组时,通常会涉及将一个字符串按照特定规则转换为数组或者对现有数组进行重新划分。以下是几种常见的方法来实现数组分割。 #### 使用 `String.split()` 将字符串转化为数组 如果目标是从字符串创建数组,则可以利用 `String.split(regex)` 方法。此方法接受一个正则表达式作为参数,并返回由该正则表达式匹配项分隔的结果字符串数组[^1]。 ```java // 示例:通过英文句号分割字符串并形成数组 public class Main { public static void main(String[] args) { String input = "aa.bb.cc"; String delimiter = "\\."; // 转义后的英文句号 String[] resultArray = input.split(delimiter); for (int i = 0; i < resultArray.length; i++) { System.out.println(resultArray[i]); } } } ``` 以上代码展示了如何使用转义符 `\.` 来正确识别英文句号作为分隔符。 #### 利用自定义逻辑分割数组 对于更复杂的场景,比如需要依据某些条件动态调整数组内容的情况,可能无法单纯依赖内置函数完成任务。此时可以通过编写循环结构配合条件判断语句来自行构建新的子数组集合[^2]。 下面是一个例子,展示如何手动实现类似于题目描述中的功能——即把整数列表划分为若干个连续递增序列: ```java import java.util.*; class Solution { public boolean isPossible(int[] nums) { Map<Integer, Integer> freqMap = new HashMap<>(); Map<Integer, Integer> appendFreq = new HashMap<>(); for (int num : nums){ freqMap.put(num,freqMap.getOrDefault(num,0)+1); } for (int num : nums){ if(freqMap.get(num)==0){continue;} if(appendFreq.containsKey(num)&&appendFreq.get(num)>0){ appendFreq.put(num , appendFreq.get(num)-1 ); appendFreq.put(num+1 , appendFreq.getOrDefault(num+1,0)+1 ); }else{ if(!freqMap.containsKey(num+1)||!freqMap.containsKey(num+2)){ return false; } freqMap.put(num+1,freqMap.get(num+1)-1); freqMap.put(num+2,freqMap.get(num+2)-1); appendFreq.put(num+3,appendFreq.getOrDefault(num+3,0)+1); } freqMap.put(num,freqMap.get(num)-1); } return true; } } public class TestSplitSubsequence { public static void main(String[] args) { int [] testInput={1,2,3,3,4,5}; Solution sol=new Solution(); System.out.print(sol.isPossible(testInput)); } } ``` 上述程序实现了验证输入数组能否被分解成至少三个长度大于等于三的不同连续子串的功能[^2]。 #### 总结 无论是简单的基于固定模式切割还是复杂条件下重组数据集的操作都可以借助于不同的技术手段达成目的。前者适合标准化程度较高的场合;后者适用于灵活性需求较大的环境之中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值