回复: 12
跳转到指定楼层
上一主题 下一主题
收起左侧

Stripe OA 挂经 + 求debug

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
      刚刚做完了Stripe的OA,题目地里已经很多了,就是platform balance那道题,做之前看了一下地里的面经,比较集中的就是第5个和第12个样例通不过。楼主debug之后有三个样例通不过4, 5, 12,debug之后
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
没有通过,下方的代码楼主也给出了一些样例和edge case,实在想不出了,求各位帮忙看看问题出在哪儿,谢谢🙏

评分

参与人数 6大米 +22 收起 理由
zedyeung + 3 给你点个赞!
suzhongnan + 3 给你点个赞!
Wendy Cui + 3 很有用的信息!
ihudada + 5 很有用的信息!
wendywy + 3 给你点个赞!

查看全部评分


上一篇:图森 二面电面面经
下一篇:黑车昂赛
推荐
tiesto1114 2018-9-29 16:26:59 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies

评分

参与人数 3大米 +11 收起 理由
Judith8899 + 3 谢谢分享!
azureclouds + 5 很有用的信息!
kdj842969 + 3 很有用的信息!

查看全部评分

回复

使用道具 举报

推荐
lianyujia 2018-9-29 12:51:37 | 只看该作者
全局:
tmd 。他家这个题我光看懂就看了好一阵
回复

使用道具 举报

推荐
 楼主| kdj842969 2018-9-29 06:28:56 | 只看该作者
全局:
  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3. import java.util.List;
  4. import java.util.Map;

  5. public class PlatformBalance {


  6.     private static boolean isValid(String number) {
  7.         if (number == null || number.length() == 0 || number.isEmpty()) {
  8.             return false;
  9.         }

  10.         for (char cur: number.toCharArray()) {
  11.             if (cur > '9' || cur < '0') {
  12.                 return false;
  13.             }
  14.         }
  15.         return true;
  16.     }

  17.     private static List<Integer> balance(List<String> lines) {
  18.         List<Integer> result = new ArrayList<>();
  19.         if (lines == null || lines.size() == 0) {
  20.             return result;
  21.         }

  22.         Map<String, Double> account_bal = new HashMap<>();
  23.         for (String line : lines) {
  24.             String[] words = line.split(" ");
  25.             if (words[0].equals("API:")) {
  26.                 String[] transaction = words[1].split("&");
  27.                 Map<String, String> transMap = new HashMap<>();
  28.                 for (String item: transaction) {
  29.                     String[] nameValuePair = item.split("=");
  30.                     transMap.put(nameValuePair[0], nameValuePair[1]);
  31.                 }
  32.                 boolean valid = true;
  33.                 for (String key: transMap.keySet()) {
  34.                     if (!isValid(transMap.get(key))) {
  35.                         valid = false;
  36.                     }
  37.                 }
  38.                 if (!valid) {
  39.                     continue;
  40.                 }
  41.                 double total_amount = Double.parseDouble(transMap.get("amount"));
  42.                 String merchant = transMap.get("merchant");
  43.                 if (transMap.size() == 4) {
  44.                     String destination = transMap.get("destination[account]");
  45.                     double dest_amount = Double.parseDouble(transMap.get("destination[amount]"));
  46.                     double merchant_amount = total_amount - total_amount * 0.029 - 30 - dest_amount;
  47.                     account_bal.put(merchant, account_bal.getOrDefault(merchant, 0.0) + merchant_amount);
  48.                     account_bal.put(destination, account_bal.getOrDefault(destination, 0.0) + dest_amount);
  49.                 } else {
  50.                     double merchant_amount = total_amount - total_amount * 0.029 - 30;
  51.                     account_bal.put(merchant, account_bal.getOrDefault(merchant, 0.0) + merchant_amount);
  52.                 }
  53.             } else if (words[0].equals("BAL:")) {
  54.                 String query = line.substring(line.indexOf(' ') + 1);
  55.                 String query_id = query.substring(query.indexOf("=") + 1);
  56.                 if (account_bal.containsKey(query_id)) {
  57.                     double bal = account_bal.get(query_id);
  58.                     int balInteger = (int) Math.rint(bal);
  59.                     result.add(balInteger);
  60.                 } else {
  61.                     result.add(0);
  62.                 }
  63.             }
  64.         }
  65.         return result;
  66.     }


  67.     public static void main(String[] args) {
  68.         String s0 = "API: merchant=123456789&amount=1000&destination[account]=111111&destination[amount]=877";
  69.         String s1 = "API: destination[account]=112211&amount=800&merchant=123456789&destination[amount]=622";
  70.         String s2 = "BAL: merchant=123456789";
  71.         String s3 = "BAL: merchant=112211";
  72.         List<String> query1 = new ArrayList<>();
  73.         query1.add(s0);
  74.         query1.add(s1);
  75.         query1.add(s2);
  76.         query1.add(s3);
  77.         System.out.println(balance(query1));

  78.         String s4 = "API: amount=2000&merchant=10101010";
  79.         String s5 = "BAL: merchant=10101010";
  80.         List<String> query2 = new ArrayList<>();
  81.         query2.add(s4);
  82.         query2.add(s5);
  83.         System.out.println(balance(query2));

  84.         String s6 = "API: amount=1000&merchant=123456789&destination[account]=111111&destination[amount]=877";
  85.         String s7 = "BAL: merchant=123456789";
  86.         String s8 = "BAL: merchant=111111";
  87.         List<String> query3 = new ArrayList<>();
  88.         query3.add(s6);
  89.         query3.add(s7);
  90.         query3.add(s8);
  91.         System.out.println(balance(query3));

  92.         String s9 = "API: amount=2222&merchant=10101010";
  93.         String s10 = "BAL: merchant=10101010";
  94.         List<String> query4 = new ArrayList<>();
  95.         query4.add(s9);
  96.         query4.add(s10);
  97.         System.out.println(balance(query4));

  98.         String s11 = "API: merchant=123456789&amount=1000&destination[account]=111111&destination[amount]=877";
  99.         String s12 = "API: merchant=123456789&amount=1000&destination[account]=111111&destination[amount]=8ss";
  100.         String s13 = "API: merchant=123456ss9&amount=1000&destination[account]=111111&destination[amount]=8ss";
  101.         String s14 = "API: destination[account]=112211&amount=800&merchant=123456789&destination[amount]=622";
  102.         String s15 = "BAL: merchant=123456789";
  103.         String s16 = "BAL: merchant=112211";
  104.         String s17 = "BAL: merchant=11221";
  105.         List<String> query5 = new ArrayList<>();
  106.         query5.add(s11);
  107.         query5.add(s12);
  108.         query5.add(s13);
  109.         query5.add(s14);
  110.         query5.add(s15);
  111.         query5.add(s16);
  112.         query5.add(s17);
  113.         System.out.println(balance(query5));
  114.     }
  115. }
复制代码
回复

使用道具 举报

🔗
 楼主| kdj842969 2018-10-1 09:58:03 | 只看该作者
全局:
tiesto1114 发表于 2018-9-29 16:26
並不能用 transMap.size() == 4 這個條件去判定
我在debug時有看到size = 5的input 特別坑...
我會用這個 ...

解惑了!感谢!
回复

使用道具 举报

🔗
jz_s39 2018-10-2 22:19:00 | 只看该作者
全局:
楼主你第二问怎么回答的呀?怎么改进code?

评分

参与人数 1大米 +2 收起 理由
lilydiaz + 2 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
 楼主| kdj842969 2018-10-29 08:59:19 | 只看该作者
全局:
jz_s39 发表于 2018-10-2 22:19
楼主你第二问怎么回答的呀?怎么改进code?

我记得写了好几条,有一条是从多线程角度改进
回复

使用道具 举报

🔗
rainatalie 2018-11-1 09:49:39 | 只看该作者
全局:
求问大家呀,有一个条件是如果在0.00 和 0.49之间就要去掉小数点,如果大于0.5,就要 + 1。。。这个在java 里面怎么弄呀。我有一个case 一直过不去,我的代码得到的是188, 可是正确答案是189.。。。。哭死了
回复

使用道具 举报

🔗
rainatalie 2018-11-1 10:44:44 | 只看该作者
全局:
感觉楼组的bug 应该不是因为要查=后面的数字是不是valid的,而是别的原因。因为account id 不像银行卡必须得是数字,而且题目里面也没有说account 的形式是数字呢。。。。
回复

使用道具 举报

🔗
 楼主| kdj842969 2018-11-2 08:52:10 | 只看该作者
全局:
rainatalie 发表于 2018-11-1 09:49
求问大家呀,有一个条件是如果在0.00 和 0.49之间就要去掉小数点,如果大于0.5,就要 + 1。。。这个在java  ...

Math.rint()也不行么?
回复

使用道具 举报

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

本版积分规则

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