12
返回列表 发新帖
楼主: jiak94
跳转到指定楼层
上一主题 下一主题
收起左侧

10分钟前的面经 Zenefits

🔗
 楼主| jiak94 2015-9-1 12:49:23 | 只看该作者
全局:
hulahu 发表于 2015-9-1 07:13
楼主, 打错了吗? eZafhajkefhlZadhflkejhZfagjhfebhh 这有三个Z

补充内容 (2015-9-1 07:14):

标少了...但是答案还是2 因为Y只有两个
回复

使用道具 举报

🔗
purplesky85 2015-9-2 05:26:23 | 只看该作者
全局:
不知道要求的时间复杂度是多少,简单想了下,可以用二分。

  public int StringPower(String A, String B) {
    if (A.length() > B.length()) {
      return 0;
    }
    int n = B.length() / A.length();

    int left = 0;
    int right = n;
    while (left + 1 < right) {
      int mid = left + (right - left) / 2;
      if (isValid(A, B, mid)) {
        left = mid;
      } else {
        right = mid;
      }
    }

    if (isValid(A, B, right)) {
      return right;
    }
    return left;
  }

  private boolean isValid(String A, String B, int k) {
    int index = 0;
    for (int i = 0; i < A.length(); i++) {
      for (int j = 0; j < k; j++) {
        while (index < B.length() && A.charAt(i) != B.charAt(index)) {
          index++;
        }
        if (index == B.length()) {
          return false;
        }
        index++;
      }
    }

    return true;
  }
回复

使用道具 举报

🔗
 楼主| jiak94 2015-9-3 01:10:03 | 只看该作者
全局:
purplesky85 发表于 2015-9-2 05:26
不知道要求的时间复杂度是多少,简单想了下,可以用二分。

  public int StringPower(String A, String  ...

没太看懂, 但是简单的方法可以先从1开始, 判断是否是subseqence, 如果是, power++, 再判断, 直到不是为止.

power = 0;
XYZ是, power++; 然后再 判断 XXYYZZ, 也是, power++;, 再判断XXXYYYZZZ, 结果不是, 此时power = 2

就return了. 时间复杂度是O(N)
回复

使用道具 举报

🔗
readman 2015-9-4 00:51:03 | 只看该作者
全局:
public int findK(String a, String b) {
        int[] count_a = new int[256];
        int[] count_b = new int[256];
        for (int i = 0; i < a.length(); i++) {
            count_a[a.charAt(i)]++;
        }
        for (int i = 0; i < b.length(); i++) {
            if (count_a[b.charAt(i)] == 0)
                count_b[b.charAt(i)] --;
            else
                count_b[b.charAt(i)] ++;
        }
        StringBuffer sb_b = new StringBuffer();
        for (int i = 0; i < b.length(); i++) {
            if (count_b[b.charAt(i)] > 0)
                sb_b.append(b.charAt(i));
        }
        String t_b = encode(sb_b.toString());
        int min = Integer.MAX_VALUE;
        for (int i = 0; i <t_b.length(); i++) {
            if (t_b.charAt(i) <= '9' && t_b.charAt(i) >= '0')
                min = Math.min(min, t_b.charAt(i) - '0');
        }
        return min;
    }
    public String encode(String s) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < s.length(); i++) {
            int counter = 1;
            while (i+1 < s.length() && s.charAt(i) == s.charAt(i+1)) {
                counter++;
                i++;
            }
            sb.append(counter);
            sb.append(s.charAt(i));
        }
        return sb.toString();
    }
    public static void main(String[] args) {
        String a = "XYX";
        String b = "XXadhflakjhelXXzzqqkkpoYadadfhgakheZafhajkefhlZadhflkejhZfagjhfebhhXX";
        System.out.println(new Zenefits().findK(a,b));
    }
回复

使用道具 举报

全局:
readman 发表于 2015-9-4 00:51
public int findK(String a, String b) {
        int[] count_a = new int[256];
        int[] count_b ...

XXXYYYXZZZ 的话是否会return 1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表