码迷,mamicode.com
首页 > 其他好文 > 详细

CC150 9.5

时间:2014-12-05 19:50:00      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:interview

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

标签:interview

原文地址:http://7371901.blog.51cto.com/7361901/1586519

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!