对于前段时间的编程课,我们被赋予了一个相对简单的任务,其本质可以归结为:
存储n 个字符串的数组(不是列表),其中n始终 <= m,允许添加新字符串并删除旧字符串。(在本例中,m为 50)
后来和我的朋友讨论这个问题时,我们意识到我们三个人都以不同的方式解决了这个问题。我的问题(出于好奇)是我们中的哪一个有最好的答案(所有事情都是平等的)以及为什么。
朋友 A去实现本质上是一个 ArrayList;创建一个具有不同大小的新数组,并使用for
循环将原始数组中的所有元素放入新数组中(加上或减去他正在添加/删除的那个)。
朋友 B简单地创建了一个长度为m的数组,通过将元素的值设置为 null 来删除元素(例如array[13] = null
),并通过从索引 0 向前擦洗直到找到一个空点来添加元素(这是一个for
循环)。
Friend C [Me]还创建了一个长度为m的数组,但在删除字符串时将每个后续值向前移动(即通过for
循环将其索引减 1),因此n -1 始终是最后一个值的索引(当n > 0),并且n也是添加新值的索引(消除for
添加字符串的循环)。
这是一个相当基础的课程,只要我们做到了,他们就不关心我们是怎么做到的,但我们很好奇。
编辑:我刚刚意识到我遗漏了一些可能很重要的东西。问题指定按值(例如)而不是索引来删除字符串removeString("someString")
,这也使得查找值(及其索引)成为一项要求。