一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 2424|回复: 9
收起左侧

Google电面

[复制链接] |试试Instant~ |关注本帖
wangmengcathy 发表于 2016-5-3 04:03:34 | 显示全部楼层 |阅读模式

2016(4-6月) 码农类 硕士 全职@Google - 内推 - 技术电面 |Otherfresh grad应届毕业生

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

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
分分钟刚面完。。赶紧写个面经赞一波人品。。
一个不知道是不是国人的女生声音挺甜的accent不太像local,如果是还求国人妹子给过啊。。

上来大概问了5分钟background然后直接上题,一个string decompression的题。。不知道是不是原题反正没见过。。题目如下
2[abc]3[a]c => abcabcabcaaac;     2[ab3[d]]2[cc] => abdddabdddcc
     输入                   输出
一开始用了一个栈,写着写着嵌套的逻辑卡住了,最后用俩stack解决。。然后follow-up问的是不要输出string而是输出解压后的K-th character,主要也还是嵌套情况就从内到外把疙瘩解开以后再算。。然后我问俩问题就结束了。整体感觉妹子面试官人很nice 反应很快而且不是特别picky的那种。
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
求好运~,求onsite
. visit 1point3acres.com for more.

补充内容 (2016-5-3 07:25):
2[abc]3[a]c => abcabcaaac; 上面多写了一遍

评分

2

查看全部评分

yueliu2366 发表于 2016-5-3 06:00:34 | 显示全部楼层
祝楼主好运onsite。 自己练习一下,一个使用单个stack的解法,就是遍历给的字符串,如果遇到不是']'的字符,就入栈。如果遇到']',就出栈直到遇到'['(‘[’ 也得出栈), 然后继续出栈,计算前面的个数。计算完后循环重新入栈,就把里面的括号解开了,以此类推。最后栈里面就是结果,出栈后由于是倒序的,reverse一下返回:
public class Solution {
    public String decompression(String s) {
        if (s == null || s.length() == 0) {
            return s;
        }
        LinkedList<Character> stack = new LinkedList<Character>();
        for(int i = 0; i < s.length(); i++) {. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
            if (s.charAt(i) != ']') {
                stack.push(s.charAt(i));
            } else if (s.charAt(i) == ']') {
                StringBuilder sb = new StringBuilder();
                char curC = stack.pop();
                while(cur != '[') {
                    sb.append(curC);
                    curC = stack.pop();. From 1point 3acres bbs
                }
                int num = getRepeatTimes(stack);
                String str = sb.toString();
                for(int i = 0; i < num; i++) {
                    for(int j = str.length() - 1; j >= 0; j--) {
                        stack.push(str.charAt(j));
                    }
                }
            }
        }
        
        StringBuilder ret = new StringBuilder();
        while(!stack.isEmpty()) {
            ret.append(stack.pop());
        }
        return ret.reverse().toString();
    }
    . from: 1point3acres.com/bbs
    int getRepeatTimes(LinkedList<Character> stack) {. from: 1point3acres.com/bbs
        int ret = 0;
        int base = 1;. more info on 1point3acres.com
        while(stack.peek() >= '0' && stack.peek() <= '9') {
            ret += Integer.parseInt(stack.pop()) * base;
            base *= 10;
        }
    }
}
回复 支持 反对

使用道具 举报

ogjkfkungosxsf 发表于 2016-5-3 06:25:00 | 显示全部楼层
请问楼主什么时候投的呀,这个时间呢new grad还有坑吗
回复 支持 反对

使用道具 举报

 楼主| wangmengcathy 发表于 2016-5-3 06:25:35 | 显示全部楼层
yueliu2366 发表于 2016-5-3 06:00
祝楼主好运onsite。 自己练习一下,一个使用单个stack的解法,就是遍历给的字符串,如果遇到不是']'的字符 ...
.1point3acres缃
哈哈多谢! 看到你在很多google电面里的回复 感觉你还是很厉害的 你也是最近要面了吧。。这个解法是可行的 我当时是number和tmp string分开两个stack存的 会稍微concise些。。
回复 支持 反对

使用道具 举报

houqingniao 发表于 2016-5-3 07:01:45 | 显示全部楼层
bless LZ。题目意思就是重复括号内的字符串n遍吗?例子对吗? 2[abc]3[a]c 不应该是abcabcaaac?  为啥是三遍abc?
回复 支持 反对

使用道具 举报

adiggo 发表于 2016-5-3 07:18:01 | 显示全部楼层
写个python的版本, 欢迎指正  
  def decompression(self, input):
        if not input:
            return ''
        stack = []
        res = ''
        for c in input:
            if c != ']':. 1point 3acres 璁哄潧
                stack.append(c). 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
            else:. from: 1point3acres.com/bbs
                rep_char = []. visit 1point3acres.com for more.
                cur = stack[-1]
                while stack and stack[-1] != '[':. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
                    rep_char.append(stack.pop())
                if stack:
                    stack.pop()
                else:
                    # not valid input format
                    return ''
                rep = []
                while stack and stack[-1] >= '0' and stack[-1] <= '9':
                    rep.append(stack.pop()). 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
                rep_num = 0
                for n in reversed(rep):
                    rep_num = 10 * rep_num + int(n)
                rep_char = rep_char[::-1]
                stack.append(rep_num * ''.join(rep_char))
        return ''.join(stack)
回复 支持 反对

使用道具 举报

 楼主| wangmengcathy 发表于 2016-5-3 07:25:45 | 显示全部楼层
ogjkfkungosxsf 发表于 2016-5-3 06:25. more info on 1point3acres.com
请问楼主什么时候投的呀,这个时间呢new grad还有坑吗

4月初推得吧
回复 支持 反对

使用道具 举报

 楼主| wangmengcathy 发表于 2016-5-3 07:27:17 | 显示全部楼层
houqingniao 发表于 2016-5-3 07:01
bless LZ。题目意思就是重复括号内的字符串n遍吗?例子对吗? 2[abc]3[a]c 不应该是abcabcaaac?  为啥是三 ...

你说得对 已经在补充里指正了
回复 支持 反对

使用道具 举报

yueliu2366 发表于 2016-5-3 08:04:58 | 显示全部楼层
wangmengcathy 发表于 2016-5-3 06:25
哈哈多谢! 看到你在很多google电面里的回复 感觉你还是很厉害的 你也是最近要面了吧。。这个解法是可行 ...

恩,也是最近了。lz放心,妹子光环onsite必过
回复 支持 反对

使用道具 举报

Littles 发表于 2016-5-10 17:15:08 | 显示全部楼层
bless楼主必过!
楼主,这个题目被压缩的是只有字母吗?还是有可能出现数字的情况。比如 3[2a] -> 2a2a2a
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-4 03:57

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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