数据结构-字符串
添加元素(add(int num)
)
检查当前元素数量是否等于数组容量(
size == arr.length
)如果已满,创建一个新数组
brr
,容量是原数组的 1.5 倍将原数组元素复制到新数组,然后将
arr
指向新数组(完成扩容)
将新元素添加到
arr[size]
位置元素数量
size
加 1
指定位置添加(add(int position, int num)
)
先检查插入位置的合法性(
position < 0 || position > size
则提示错误)如需扩容,执行与上面相同的扩容逻辑
从最后一个元素开始,将
position
位置及之后的元素依次向后移动一位(避免覆盖数据)在
position
位置插入新元素元素数量
size
加 1
二 删除元素(delete(int num)
)
从数组末尾向前遍历(
i从size-1到0
)当找到与
num
相等的元素时:从该元素的下一位开始,将所有元素依次向前移动一位(覆盖要删除的元素)
元素数量
size
减 1
注:此实现会删除所有与
num
相等的元素(因为是遍历整个数组)
字符串查找:
遍历数组:从数组的第一个元素(索引
0
)开始,逐个检查到当前实际元素的最后一个(索引size-1
)。匹配判断:在遍历过程中,将每个元素与目标值
num
进行比较。返回结果:
- 如果找到与
num
相等的元素,立即返回该元素所在的索引位置(第一个匹配项)。 - 如果遍历完所有元素都没有找到匹配项,则返回
-1
,表示该元素不存在于集合中。
- 如果找到与
二分查找法查找有序数组
- 递归终止条件:
left > right
时,说明查找范围无效,返回-1
(没找到)。 - 取中间索引:
mid = left + (right - left) / 2
(避免直接(left+right)/2
可能的整数溢出)。 - 匹配判断:
- 找到目标值:
arr[mid] == target
,返回mid
(索引)。 - 中间值小于目标值:说明目标值在右半段,递归查找
[mid+1, right]
。 - 中间值大于目标值:说明目标值在左半段,递归查找
[left, mid-1]
。
- 找到目标值: