首页 > 代码库 > CC150 9.5
CC150 9.5
9.5 Given a sorted array of strings which is interspersed with empty strings, write a method to find the location of a given string. Example: find “ball” in [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”, “”, “dad”, “”, “”] will return 4 Example: find “ballcar” in [“at”, “”, “”, “”, “”, “ball”, “car”, “”, “”, “dad”, “”, “”] will return -1
Normal O(n).
But A better one?
Let‘s binary search.
int search (String[] a, String s) { return search(a, 0, a.length - 1, s); } int search (String[] a, int l, int h, String s) { if (l > h) return -1; int m = (l + h) / 2; // Move to first non empty string int nm = m; while (a[nm].isEmpty()) { nm ++; if (nm > h) return -1; } if (a[nm] == s) return nm; else if (a[nm] > s) return search(a, l, m - 1, s); else return search(a, nm + 1, h, s); }
CC150 9.5
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。