数据结构-字符串

添加元素(add(int num)

  1. 检查当前元素数量是否等于数组容量(size == arr.length

    • 如果已满,创建一个新数组brr,容量是原数组的 1.5 倍

    • 将原数组元素复制到新数组,然后将arr指向新数组(完成扩容)

  2. 将新元素添加到arr[size]位置

  3. 元素数量size加 1

指定位置添加(add(int position, int num)

  1. 先检查插入位置的合法性(position < 0 || position > size则提示错误)

  2. 如需扩容,执行与上面相同的扩容逻辑

  3. 从最后一个元素开始,将position位置及之后的元素依次向后移动一位(避免覆盖数据)

  4. position位置插入新元素

  5. 元素数量size加 1

二 删除元素(delete(int num)

  1. 从数组末尾向前遍历(i从size-1到0

  2. 当找到与num相等的元素时:

    • 从该元素的下一位开始,将所有元素依次向前移动一位(覆盖要删除的元素)

    • 元素数量size减 1

  3. 注:此实现会删除所有与num相等的元素(因为是遍历整个数组)

字符串查找:

  1. 遍历数组 :从数组的第一个元素(索引0)开始,逐个检查到当前实际元素的最后一个(索引size-1)。

  2. 匹配判断 :在遍历过程中,将每个元素与目标值num进行比较。

  3. 返回结果

    • 如果找到与num相等的元素,立即返回该元素所在的索引位置(第一个匹配项)。
    • 如果遍历完所有元素都没有找到匹配项,则返回-1,表示该元素不存在于集合中。

二分查找法查找有序数组

  1. 递归终止条件left > right 时,说明查找范围无效,返回 -1(没找到)。
  2. 取中间索引mid = left + (right - left) / 2(避免直接 (left+right)/2 可能的整数溢出)。
  3. 匹配判断
    • 找到目标值:arr[mid] == target,返回 mid(索引)。
    • 中间值小于目标值:说明目标值在右半段,递归查找 [mid+1, right]
    • 中间值大于目标值:说明目标值在左半段,递归查找 [left, mid-1]