- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
类项目要求我们读取单个文本文件中包含的 10,514 首歌曲的标题、艺术家和歌词。该项目的当前部分让我们编写一个有序的展开链接列表并在标题字段上运行搜索。还编写了比较器来按标题对列表进行排序。我们必须跟踪查找匹配项所需的比较
测试时,我得到了一些奇怪的结果。例如,运行搜索
angel返回23个匹配,需要552次比较,与教授给出的答案相符
t 返回零个匹配项,需要 9530 次比较,而预期为 1148 次匹配
ta 返回 62 个匹配项,需要 8455 次比较
s 返回没有匹配项,需要 8383 次比较
sa 返回 89 个匹配项并需要 7355 次比较
我的搜索算法运行如下:
对于第一步和第二步,我通过
if (currentSong.getTitle().toLowerCase().startsWith(titleSearch)) 将当前值与搜索值进行比较
这行代码在单字母搜索时返回 false,但是添加 a 后却找到了值,这是怎么回事?最好,我想要一个不需要我在调试器中手动单步执行 8000 多次循环迭代的解决方案。此外,教授还对结构进行了预期值的测试,我的代码通过了所有测试。
最佳答案
我发现问题出在哪里了。在 subList 方法中,我使用二分搜索方法来识别第一个找到的匹配项的索引位置。但是,由于二分搜索仅返回它遇到的第一个匹配项,因此我有一个循环来向后遍历数组以找到真正的第一个匹配项。
但是,在这种情况下,二分搜索返回的第一个命中位于 0 索引处,因此当我向后走时,会抛出 ArrayIndexOutOfBoundsException ,从而使整个事情短路。添加第二个测试解决了问题。
关于java - startsWith() 返回意外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4038610/
我使用的是 Java 版本 1.8.0_31。 我正在尝试使用 FileVisitor 接口(interface)递归访问目录树。该程序应打印 C:/books 中文件名以“Ver”开头的所有文件的名
我有一个 Java 方法,它接受类型的参数 interface Function2 { TR apply(TP1 p1, TP2 p2) } 以及像这样的 Java 方法 boolean cont
我有一个给我带来麻烦的功能。下面的代码返回错误消息“无法读取未定义的属性‘值’”。该函数应该只搜索帐户列表中的值并返回以提交的字符串开头的值。在示例中,提交“000555”应返回 0。 var acc
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 4 年前。 Improve th
所以我有一个问题。今天我开始优化我的代码并达到了这一点,例如: return !this.message.startsWith("/"); 请遵循我从 here 获取优化技巧的地方。 (链接到规则)
我仍在使用 Java 开发一个项目,想问问是否有人可以帮助我? 我问我是否有可能用“startsWith”来检查一个包含多个字母的字符串? 喜欢: if (string Alpha.startsWi
类项目要求我们读取单个文本文件中包含的 10,514 首歌曲的标题、艺术家和歌词。该项目的当前部分让我们编写一个有序的展开链接列表并在标题字段上运行搜索。还编写了比较器来按标题对列表进行排序。我们必须
我加入了两个列表,一个包含总线路径,另一个包含作为总线子路径的磁盘路径。所以基本上我想加入 diskpath.startswith(buspath)。问题是 Join On 只允许在 equals 的
我有这个代码: for (var i = 0; i TypeError: r[e].startsWith is not a function > at js-cf2cc68….min.js.g
我正在阅读 Microsoft 的 Best Practices for Using Strings in the .NET Framework . 它给出了以下示例作为对 StringCompari
我正在寻找一个集合来存储键值对,其中值应该根据键 startswith 条件返回。 例如对于给定的集合:(a,123) (ab,234) (abcd,5434) 如果我执行 map.get(a) 它应
有没有办法检查一个字符串是否以不同的字母开头,而不是只检查一次。 下面是我当前的代码: myString.startsWith('M') || myString.startsWith('L
函数:startswith() 作用:判断字符串是否以指定字符或子字符串开头 1、函数说明 语法:string.startswith(str, beg=0,end=len(string))
在网站上没有找到这个,但我确实找到了 open bug on Github在撰写本文时,唯一的解决方案是使用 GatsbyImage。学习将 Gatsby 项目从 2 转换为 3 我已经安装了 gat
我是 PowerShell 的新手,如果字符串不是以特定字符开头,我正在尝试运行一些代码,但是我无法让它处理多个字符。 这是工作正常的代码。 if (-Not $recdata.StartsWith
我需要查看文本的第一行是否以 By 开头,如果是,则剪切整行并将其存储在变量中,并删除所有空白行,直到下一段开始。查找 By 的方法需要不区分大小写,并且前面也可能有一些空格。如果第一行不是以 By
当我像这样使用 odata 时:$filter=startswith(tolower(firstName),tolower('A'))它不起作用。 我想知道tolower和toupper是否可以和st
这个问题在这里已经有了答案: Conditional statement inside a match case (2 个答案) 关闭 4 个月前。 有没有办法像下面这样使用匹配大小写来选择字符串结
我有一个这样的查找: Lookup plsBase = (Lookup)(Query($@"Select ...").ToLookup(s => s.ip, o => o)); 当我通过按键访
当我像这样使用 odata 时:$filter=startswith(tolower(firstName),tolower('A'))它不起作用。 我想知道tolower和toupper是否可以和st
我是一名优秀的程序员,十分优秀!