zoukankan      html  css  js  c++  java
  • 字符串比较

    网上看到有人也说是他遇到的一道笔试题,那我想这道题目其实还考过很多人。只不过当时是给我笔让我写出来,一下子懵住了,没缓过神来。写的算法时间复杂度为O(n*m),而出题的要求是时间复杂度控制在O(n+m),而且内存和CPU要控制的很小。

    已经快一年了,只记得题目的大意是:两个很多的字符串A、B(全部小写字母),请找出A中有,而B中没有的?

    如果是用纸写出来,我想思考后也能写出来,而如果只是说(一般最多说一次,实在不理解最多再重复一次,还不能理解,别人可能会认为你理解和沟通上有障碍了)其实还挺考一个人的理解能力和反应能力。

    记得我当时是提笔就写,得到的回答是问:是说还能不能继续优化?然后又改了改,同样又问,能不能继续优化。其实这道题并不难,重点是要理解出题的本意,找到最高效的方法,后来要想好后手机(最多140个字符)发给他。

    题目有两个信息已经透露出来了:

    1、对于比较字符串,尽量避免二次或以上的循环(消耗时间),出这道题希望给出的代码只有一次循环;

    2、全部都是小定字母,而小写字母最多只有26个(a-z);

    当时直接在手机上写的,代码也不见了,刚自己又写了一遍:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title> new document </title>
    <meta name="generator" content="editplus" />
    <meta name="author" content="" />
    <meta name="keywords" content="" />
    <meta name="description" content="" />
    <meta http-equiv='content-type' content='text/html;charset=utf-8' />
    </head>

    <body>

    <script type="text/javascript">
    var s1 = new Array(60999*10).join('abcdefghijklmnopqrstuvwxyz'),
    s2 = '';

    !(function() {
    var arr = [], i = 0, s = '';

    while (i < 26) {
    i++;
    s = String.fromCharCode(Math.random()*26 + 97);
    arr.push(s);
    }

    s2 = new Array(10000*10).join(arr.join(''));
    })();

    function getChar(str1, str2) {
    var arr = [],
    s = '';

    for (var i = 97;i < 123 ;i++ ) {
    s = String.fromCharCode(i);
    if (str1.indexOf(s) > -1 && str2.indexOf(s) == -1) {
    arr.push(s);
    }
    }

    return arr.join("");
    }

    var date1 = +new Date();
    var rstStr = getChar(s1, s2);
    var date2 = +new Date();

    alert('Total Date:' + (date2 - date1) + '\n string is : ' + rstStr);
    </script>

    </body>
    </html>

    在线运行代码:

  • 相关阅读:
    scala
    数据结构(01)
    基本算法(07)
    基本算法(06)
    基本算法(05)
    git pull文件时和本地文件冲突的问题
    获取两个日期之间的日期形成一个集合
    lombok的简单介绍(2)
    springboot启动报错
    逆向工程的创建
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/1968685.html
Copyright © 2011-2022 走看看