跳至主要内容

讨论下lc最新的那道hard题吧


http://www.mitbbs.com//article_t/JobHunting/33056247.html

发信人: jingi08 (骑驴中), 信区: JobHunting
标  题: 讨论下lc最新的那道hard题吧
发信站: BBS 未名空间站 (Sat Sep 19 01:33:41 2015, 美东)

题目如下:
Given a string that contains only digits 0-9 and a target value, return all
possibilities to add binary operators (not unary) +, -, or * between the
digits so they evaluate to the target value.

给的几个例子:
"123", 6 -> ["1+2+3", "1*2*3"]
"232", 8 -> ["2*3+2", "2+3*2"]
"105", 5 -> ["1*0+5","10-5"]
"00", 0 -> ["0+0", "0-0", "0*0"]
"3456237490", 9191 -> []


下面是我的java code,有个test case一直超时,求大牛指点优化。我的思路很简单,
先生成所有可能的计算式,然后对每个计算式求值与target比较。

public List<String> addOperators(String num, int target) {
        List<String> result = new ArrayList<String>();
        if(num == null || num.length() == 0) return result;
        List<String> expressions = new ArrayList<String>();
        generate(num, expressions, 0, "");
        for(String str : expressions)
            if(evaluate(str) == target) result.add(str);
        return result;
    }
   
    private void generate(String num, List<String> result, int pos, String
currResult) {
        if(pos == num.length()) {
            result.add(currResult);
            return;
        }
        String currStr = currResult + num.substring(pos, pos+1);
        if(pos == num.length() - 1) {
            generate(num, result, pos+1, currStr);
        } else {
            // apply '+'
            generate(num, result, pos+1, currStr+"+");
            // apply '-'
            generate(num, result, pos+1, currStr+"-");
            // apply '*'
            generate(num, result, pos+1, currStr+"*");
            // no operator, combine digits
            generate(num, result, pos+1, currStr);
        }
    }
   
    private long evaluate(String str) {
        LinkedList<Long> operand = new LinkedList<>();
        LinkedList<Character> operator = new LinkedList<>();
        for(int i = 0; i < str.length(); i++) {
            if(str.charAt(i) == '+' || str.charAt(i) == '-' || str.charAt(i)
== '*') {
                operator.offer(str.charAt(i));
                continue;
            }
            long val = 0;
            while(i < str.length() && str.charAt(i) >= '0' && str.charAt(i)
<= '9') {
                val = val * 10 + str.charAt(i) - '0';
                i++;
            }
            i--;
            operand.offer(val);
            if(operator.size() > 0 && operator.peekLast() == '*') {
                operator.pollLast();
                operand.offer(operand.pollLast() * operand.pollLast());
            }
        }
        // evaluate the remaining part
        while(!operator.isEmpty()) {
            char optor = operator.poll();
            long operand1 = operand.poll();
            long operand2 = operand.poll();
            if(optor == '+') {
                operand.offerFirst(operand1 + operand2);
            } else {
                operand.offerFirst(operand1 - operand2);
            }
        }
        return operand.poll();
    }
--

评论

此博客中的热门博文

记者探访H&M实体店,店员:我们也爱国,希望明天就关门

http://www.mitbbs.com/article_t/ChinaNews/32684337.html 发信人: jiuna (), 信区: ChinaNews 标  题: 记者探访H&M实体店,店员:我们也爱国,希望明天就关门 发信站: BBS 未名空间站 (Thu Mar 25 02:55:55 2021, 美东) 3月25日中午,《环球时报》记者走访了北京市三里屯核心商区,探访新疆棉事件对H&M 及Nike等品牌实体店的影响。记者发现,在整整占据了三层的北京最大的H&M店之一的 店铺内,顾客稀少,门可罗雀,一些路人进店挑选后也选择不购买其产品即离开。 "看到了H&M和Nike的声明之后,近期不会再购买他们的产品了。既然想在中国做生意 ,还侮辱中国人,那中国人肯定不会支持,"一位路人在接受《环球时报》采访时表示 。"抵制他们的产品对我们并不会产生什么影响,因为替代产品有很多。国内很多品牌 都有很好的设计和质量,大多数时间也都在网上逛淘宝,样式和质量都比H&M好很多, "一位姓赵的北京居民表示。 在接受采访时,一些路人表示,除非H&M展现出道歉的诚意,否则将来也不会再选择这 个品牌。 位于上海某繁华商业街的一家HM店,今天门口有保安值守,店员十分警戒,不让记者拍 摄。两名店员对《环球时报》记者表示他们也希望明天就关店,也不希望发生这样的事 情,他们也是爱国的,但他们只是店员,希望得到记者理解。 王先生是一位在上海南京西路附近上班的打工族,由于听到关于HM的消息,他特地在午 休时间来HM店面转转。王先生告诉记者,"作为一家大公司应该吸取经验教训,在中国 做生意,想赚中国人的钱,就更应该尊重中国人民的感情。" 王先生告诉记者,中国老百姓应该拿出一点实际行动,给这些国外公司一些警告以及反 馈信息。王先生说希望这个事件能给更多的类似企业传递更多的信息,中国人民欢迎外 企来做生意,但是前提一定是秉持公平公正的原则,尊重中国人民的感情。 -- ...

分享一下在ICC工作的经验,以及contractor行业的注意事项。

http://www.mitbbs.com/article_t/JobHunting/33509585.html 发信人: poyang (), 信区: JobHunting 标  题: 分享一下在ICC工作的经验,以及contractor行业的注意事项。 发信站: BBS 未名空间站 (Fri May 22 02:28:24 2020, 美东) 最近由于疫情很多new grad同学没法上岸,很多一线大厂更是lay off出来一批大神, new grad的简历在hr眼里更是没法看了。所以很多同学都在考虑去ICC苟住身份,楼主 作为一个在icc工作了一年多的人,写下这篇帖子介绍一下ICC里的一些情况,希望在这 个非常时期帮助到各位还在找工作的同学。 1. 什么是ICC,ICC运作模式是怎么样的? ICC是India Consulting Company 的简称主要从事科技软件行业的外包业务。现在信息 时代每个行业都要像数字化方面转型,特别是大型企业。但除了一些大型科技公司,需 要大量稳定的Full time SDE。市场上大部分的传统行业包括医疗,金融, 通信,零售 等行业也需要大量技术支持和销售业务转型,所以也需要大量的码农。但为了维持公司 (client)的灵活性,所以只招收contractor(合同工). 这样可以简化招聘流程,不需要 承担contractor的身份问题,也可以随时进行人员精简,比如现在项目结束client可以 随时开除目前的合同工并且不给任何补助,也不需要给合同工任何福利。 一般来说Client公司不能直接到市场上招contractor,需要通过第三方公司(vendor) 来 招聘合同工,vendor手上握有大量client的招聘资源,但是手上不一定有很多 candidate 来应聘这些岗位。所以就会把资源放给别的公司(比如ICC)来收取一定的 提成。正常情况下大部分的公司都会给合同工$60~$90 一小时的rate, 但会被vendor抽 掉一部分,再被icc抽掉一部分,你能拿到手可能就只剩下$40~$70一小时。这个抽成具 体取决于icc和vend...

贡献一个485的详细清单,希望对大家有帮助

http://www.mitbbs.com/article_t/Immigration/33151393.html 发信人: gsu (niuer), 信区: Immigration 标  题: 贡献一个485的详细清单,希望对大家有帮助! 发信站: BBS 未名空间站 (Sat Jan 18 12:06:21 2014, 美东) 我们是一家三口,小孩小于14岁,签证都是从J1-waiver-H1B or H4, 希望对和我一样 情况的递交485时有所帮助,在必要时根据自己的情况调整。 主申请人: January 18, 2014 USCIS Texas Service Center 4141 North St. Augustine Road Dallas, TX 75227 Re:  Form I-485, Application to Adjust Status          Form I-765, Application for Employment Authorization          Form I-131, Application for Advance Parole        Applicant: **** (Primary Applicant) Dear Immigration Officer: I am filing Application to Adjust Status based on my approval for Form I-140 under classification 203(b)(1)(A) with receipt number **** My current status is H1B. Enclosed please for filing in the above referenced matter the followin...