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

Twitter电面

🔗
 楼主| norafang 2016-3-24 09:14:07 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
Dream_Hunter 2016-3-24 09:29:08 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
jiebour 2016-3-25 11:38:43 | 只看该作者
全局:
求问楼主是什么职位?多谢!
回复

使用道具 举报

🔗
 楼主| norafang 2016-3-26 22:22:25 | 只看该作者
全局:
jiebour 发表于 2016-3-25 11:38
求问楼主是什么职位?多谢!

SWE, entry level role
回复

使用道具 举报

🔗
sealove999 2016-3-27 01:55:42 | 只看该作者
全局:
楼主是这个代码的意思么


  1. public class Solution {
  2.   public String findLongestWellFormatedSubstring(String s) {
  3.     String ret = "";
  4.     Deque<Integer> stack = new ArrayDeque<>();
  5.     for (int i = 0; i < s.length(); i++) {
  6.       if (s.charAt(i) == '(') {
  7.         stack.push(i);
  8.       } else if (s.charAt(i) == ')') {
  9.         if (!stack.isEmpty() && s.charAt(stack.peek()) == '(') {
  10.           stack.pop();
  11.           int idx = stack.isEmpty() ? -1 : stack.peek();
  12.           if (i - idx > ret.length()) {
  13.             ret = s.substring(idx + 1, i + 1);
  14.           }
  15.         }
  16.       }
  17.     }
  18.     return ret;
  19.   }

  20.   public int findLongestWellFormatedSubstringLength(String s) {
  21.     int ret = 0;
  22.     Deque<Integer> stack = new ArrayDeque<>();
  23.     for (int i = 0; i < s.length(); i++) {
  24.       if (s.charAt(i) == '(') {
  25.         stack.push(i);
  26.       } else if (s.charAt(i) == ')') {
  27.         if (!stack.isEmpty() && s.charAt(stack.peek()) == '(') {
  28.           stack.pop();
  29.           ret = Math.max(ret, i - (stack.isEmpty() ? -1 : stack.peek()));
  30.         }
  31.       }
  32.     }
  33.     return ret;
  34.   }

  35.   public static void main(String[] args) {
  36.     Solution ss = new Solution();
  37.     String s = "((()())";
  38.     System.out.println(ss.findLongestWellFormatedSubstringLength(s));
  39.     System.out.println(ss.findLongestWellFormatedSubstring(s));
  40.   }
  41. }
复制代码
回复

使用道具 举报

🔗
sealove999 2016-3-27 02:03:06 | 只看该作者
全局:
sealove999 发表于 2016-3-27 01:55
楼主是这个代码的意思么

刚才那个是错的,看这个
  1. public class Solution {
  2.   public String findLongestWellFormatedSubstring(String s) {
  3.     String ret = "";
  4.     Deque<Integer> stack = new ArrayDeque<>();
  5.     for (int i = 0; i < s.length(); i++) {
  6.       if (s.charAt(i) == ')' && (!stack.isEmpty() && s.charAt(stack.peek()) == '(')) {
  7.         stack.pop();
  8.         int idx = stack.isEmpty() ? -1 : stack.peek();
  9.         if (i - idx > ret.length()) {
  10.           ret = s.substring(idx + 1, i + 1);
  11.         }
  12.       } else {
  13.         stack.push(i);
  14.       }
  15.     }
  16.     return ret;
  17.   }

  18.   public int findLongestWellFormatedSubstringLength(String s) {
  19.     int ret = 0;
  20.     Deque<Integer> stack = new ArrayDeque<>();
  21.     for (int i = 0; i < s.length(); i++) {
  22.       if (s.charAt(i) == '(') {
  23.         stack.push(i);
  24.       } else if (s.charAt(i) == ')') {
  25.         if (!stack.isEmpty() && s.charAt(stack.peek()) == '(') {
  26.           stack.pop();
  27.           ret = Math.max(ret, i - (stack.isEmpty() ? -1 : stack.peek()));
  28.         } else {
  29.           stack.push(i);
  30.         }
  31.       }
  32.     }
  33.     return ret;
  34.   }

  35.   public static void main(String[] args) {
  36.     Solution ss = new Solution();
  37.     String s = ")(()())";
  38.     System.out.println(ss.findLongestWellFormatedSubstringLength(s));
  39.     System.out.println(ss.findLongestWellFormatedSubstring(s));
  40.   }
  41. }
复制代码
回复

使用道具 举报

🔗
 楼主| norafang 2016-3-29 02:11:04 | 只看该作者
全局:
sealove999 发表于 2016-3-27 02:03
刚才那个是错的,看这个

不是求最长substring是最长subsequence, 所以()))(()()) 的话要返回()(()())
回复

使用道具 举报

🔗
sealove999 2016-3-29 03:24:18 | 只看该作者
全局:
norafang 发表于 2016-3-29 02:11
不是求最长substring是最长subsequence, 所以()))(()()) 的话要返回()(()())

楼主好棒
  1. public class Solution {
  2.   public String findLongestWellFormatedSubstring(String s) {
  3.     StringBuilder sb = new StringBuilder();
  4.     String ret = "";
  5.     Deque<Integer> stack = new ArrayDeque<>();
  6.     for (int i = 0; i < s.length(); i++) {
  7.       if (s.charAt(i) == ')' && (!stack.isEmpty() && s.charAt(stack.peek()) == '(')) {
  8.         stack.pop();
  9.         int idx = stack.isEmpty() ? -1 : stack.peek();
  10.         if (i - idx > ret.length()) {
  11.           ret = s.substring(idx + 1, i + 1); // current longest substring
  12.         }
  13.       } else {
  14.         stack.push(i);
  15.         if (s.charAt(i) == ')') {
  16.           sb.append(ret); // invalid
  17.           ret = "";
  18.         }
  19.       }
  20.     }
  21.     sb.append(ret); // last
  22.     return sb.toString();
  23.   }

  24.   public static void main(String[] args) {
  25.     Solution ss = new Solution();
  26.     String s = "()))(()())";
  27.     System.out.println(ss.findLongestWellFormatedSubstring(s));
  28.   }
  29. }
复制代码
回复

使用道具 举报

🔗
Dream_Hunter 2016-3-29 04:08:15 | 只看该作者
全局:
最长subsequence不是连续的也可以的喽?每次合法的都得加上去?
回复

使用道具 举报

🔗
 楼主| norafang 2016-4-2 07:32:39 | 只看该作者
全局:
Dream_Hunter 发表于 2016-3-29 04:08
最长subsequence不是连续的也可以的喽?每次合法的都得加上去?

是的~~~~~~~~~~
回复

使用道具 举报

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

本版积分规则

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