(一)

作者: xpwei | 来源:发表于2018-03-26 09:21 被阅读15次

    一、题目描述:
    求一个字符串的最大回文前缀长度。回文是指正反方向读起来都一样的字符串,比如“abcdcba”就是一个回文。
    输入
    一个文本文件,至少包含一个字节。每个字节是一个字符。最大长度可能有几十万字节。
    输出
    最大回文前缀的长度。
    样例输入
    Sogou
    样例输出

    $(function(){
        $('#btn0').click(function(){
            var input0=$('#input0').val();
            var floor=Math.floor(input0.length/2);
            var count=0;
            if(input0.length%2==0){
                for(var i=0,j=input0.length-1;i<floor,j>=floor;i++,j--){
                    if(input0.charAt(i)==input0.charAt(j)){
                        count++;
                    }
                }
            }else{
                for(var i=0,j=input0.length-1;i<floor,j>floor;i++,j--){
                    if(input0.charAt(i)==input0.charAt(j)){
                        count++;
                    }
                }
            }
        
            $('#area').html(count);
        });
    });
    

    二、题目描述:
    定义两个大于2的偶数之间的距离,为这两个数之间质数的个数。从小到大输入n个大于2的偶数,输出所有数两两之间距离的总和(应该有n*(n-1)/2个距离,输出总和就好)。
    输入
    第一行是输入偶数的个数,最小为2,最大可能到几万。之后每行为一个偶数,最小是4,最大可能是几百万,不重复的升序排列。
    输出
    输入数据两两间距离的总和,这应该是一个不小于0的整数。
    样例输入
    3
    4
    6
    12
    样例输出
    6

    $(function(){
        var num=0;
        var arr=[];
        num=prompt("请输入偶数的个数(最小为2):");
        if(num<2){
            num=prompt("请输入偶数的个数(最小为2):");
        }
        for(var i=0;i<num;i++){
            var cur=prompt("请输入第"+(i+1)+"个偶数:");
            if(cur%2!=0){
                cur=prompt("请输入第"+(i+1)+"个偶数:");
            }
            arr[i]=parseFloat(cur);
        }
        var count=0;
        for(var i=0;i<arr.length;i++){
            var curi=arr[i];
            for(var j=i+1;j<arr.length;j++){
                var curj=arr[j];
                for(var r=curi+1;r<curj;r++){
                    for(var s=2;s<r;s++){
                        if(r%s==0){
                            break;
                        }else if(s==r-1){
                            count++;
                        }
                    }
                }
            }
        }
        var html=num+'<br/>';
        for(var i=0;i<arr.length;i++){
            html+=arr[i]+'<br/>';
        }
        html+=count+'<br/>';
        $('#area').html(html);
    });
    

    三、【编程】写入一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

        <input type="file" value="" onchange="readFile(event)" id="input0"/>
    function readFile(event){
        var str="index";
        var str_file="";
        var file = event.target.files[0];
        var reader = new FileReader();
        reader.onload = function(event) {
            // 文件里的文本会在这里被打印出来
            str_file+=event.target.result;
            var count=str_file.split(str).length-1;
            $('#area').html(count);
        };
        reader.readAsText(file);
    }
    

    四、编写一个函数实现form的序列化(即将一个表单中的键值序列化为可提交的字符串)

    <form id="form0">
            <input type="text" value="text" name="text" />
            <select name="select">
                <option value="">请选择</option>
                <option value="1" selected>是</option>
                <option value="0" >否</option>
            </select>
            <select name="selectMuilt" multiple="multiple">
                <option value="">请选择</option>
                <option value="1" selected>选项1</option>
                <option value="0" selected>选项2</option>
                <option value="0">选项3</option>
            </select>
            <textarea name="textarea">textare</textarea>
            <label><input type="checkbox" checked name="checkbox" value="1" />多选1</label>
            <label><input type="checkbox" checked name="checkbox" value="2" />多选2</label>
            <label><input type="checkbox" name="checkbox" value="3" />多选3</label>
            <label><input type="radio" name="radio" value="1" />单选1</label>
            <label><input type="radio" name="radio" value="2" checked />单选2</label>
        </form>
    <srcipt>
        var obj={};
        var $form=$('#form0');
        //text,textarea,select
        $value0=$form.find('input[type=text],textarea,select');
        for(var i=0;i<$value0.length;i++){
            obj[$($value0[i]).attr('name')]=$($value0[i]).val();
        }
        //checkbox
        $value1=$form.find('input[type=checkbox]:checked');
        var cur='';
        for(var i=0;i<$value1.length;i++){
            cur+=$($value1[i]).val()+',';
            obj[$($value1[i]).attr('name')]=cur;
        }
        //radio
        $value2=$form.find('input[type=radio]:checked');
        for(var i=0;i<$value2.length;i++){
            obj[$($value2[i]).attr('name')]=$($value2[i]).val();
        }
        return obj;
    </script>
    

    五、请用js原生代码写出数组去重的函数,并考虑到执行效率。

        var arr=[2,4,1,2,4,5,2,5,6,7,8,22,53];
        var newArr=[];
        for(var i=0;i<arr.length;i++){
            if(newArr.indexOf(arr[i])==-1){
                newArr.push(arr[i]);
            }
        }
        alert(newArr);
    

    六、
    【题目描述】
    真是一个无聊的夜晚啊,小B和小C在宿舍中实在无聊之极,因此决定玩一个数字游戏打发时间。小B首先开始,她给小C的问题是:
    给定任意一个整数,小C可以交换该数中任意的不同位,能够得到的最小数值是多少?前提是不能有前导0。
    小C很快就给出了一个答案,小B希望你来帮她检验答案的正确性,你能帮忙吗?
    输入
    输入中有多组测试数据。每组测试数据的第一行为一个没有前导0的整数n(0=< n =< 109),第二行为另一个整数m(0=<m=<109),小C给出的问题答案。
    输出
    对每组测试数据,在单独的行中输出结果,若小C的答案是正确的,输出YES,否则输出NO。
    样例输入
    3310
    1033
    4
    5
    样例输出
    YES
    NO

    var ques=prompt("请输入数字:");
        var ans=prompt("请输入答案:");
        var arr=ques.split("");
        arr=arr.sort(compare);
        if(arr[0]=='0'){
            for(var i=1;i<arr.length;i++){
                if(arr[i]!='0'){
                    arr[0]=arr[i];
                    arr[i]='0';
                    break;
                }
            }
        }
        var res=arr.join("");
        var result='NO';
        if(res==ans){
            result='YES';
        }
        alert(result);
    
        function compare(val0,val1){
            if(val0>val1){
                return 1;
            }else if(val0<val1){
                return -1;
            }else{
                return 0;
            }
        }
    

    七、【题目描述】
    小B对脑筋急转弯问题很有兴趣,她觉得这种问题的挑战能够反映一个人的应急反应能力。她正在开发一个智力测试的游戏,游戏的主角是一个蚂蚱。蚂蚱最初位于0点处,可以在直线上向正向或反向两个方向跳跃。比较特别的是,蚂蚱每次跳跃的距离比前一次跳跃多一个单位,第一次跳跃的距离为一个单位。
    小B的问题是,如果让蚂蚱跳跃到x处,需要经过多少次跳跃,你能解决这个问题吗?
    输入
    输入中有多组测试数据。每组测试数据为单独的一行,包含一个整数x(-10^9 =< x =< 10^9)。
    输出
    对每组测试数据,在单独的行中输出蚂蚱最少需要跳跃的次数。
    样例输入
    2
    6
    0
    样例输出
    3
    3
    0

    //思路:开始让蚂蚱一直往向所在方向向前跳,在跳下一步之前先判断当前所在的位置加上下一步要跳的距离是否会超过所要到的位置。
    var step=1;
    var cur=0;
    var x=parseInt(prompt("输入:"));
    var count=0;
    if(cur!=x){
        do{
            if(cur+step<=x){
                cur+=step;
                step++;
                count++;
            }else if(cur+step>x){
                cur-=step;
                step++;
                count++;
            }
        }while(cur!=x);
    }
    alert(count);
    

    八、根据Unix时间戳计算时间,不分大小月,每月30天,每年按360天计算。
    开始时间1970/01/01 00:00:00,输入秒数,显示时间
    例如,输入:
    2
    1
    12345678
    输出
    1970/01/01 00:00:01
    1970/05/23 21:21:18

    //思路一:进位,60秒进1分钟,60分进1小时,24小时进1天,30天进1月,12月进1年,依次建立循环
    var year=1970;
    var month=1;
    var day=1;
    var hh=0;
    var mm=0;
    var ss=0;
    var num=parseInt(prompt('输入秒数:'));
    while(num>60){
        num-=60;
        mm++;
        if(mm==60){
            mm-=60;
            hh++;
            if(hh==24){
                hh-=24;
                day++;
                if(day==30){
                    month++;
                    day-=30;
                    if(month==12){
                        year++;
                        month-=12;
                    }
                }
            }
        }
    }
    ss+=num;
    alert(year+'/'+fillZero(month)+'/'+fillZero(day)+" "+fillZero(hh)+":"+fillZero(mm)+":"+fillZero(ss));
    function fillZero(val){
        if(val<10){
            val='0'+val;
        }
        return val;
    }
    

    相关文章

      网友评论

          本文标题:(一)

          本文链接:https://www.haomeiwen.com/subject/ewphcftx.html