zoukankan      html  css  js  c++  java
  • 最近前端笔试遇上的笔试题有感

    1.给出一个字符串,显示出字符串里重复次数最多的元素,并显示次数出来

      如:"sdoiokasdhdiuwasad" 

      输出:  出现最多:d    出现次数:4

     1 function remenber(str){
     2       var o = {};
     3       for (var i = 0; i < str.length; i++) {
     4         if (o[str[i]]) { //char就是对象o的一个属性,o[char]是属性值,o[char]控制出现的次数
     5           o[str[i]]++; //次数加1
     6         } else {
     7           o[str[i]] = 1; //若第一次出现,次数记为1
     8         }
     9       }
    10       console.log(o); //输出的是完整的对象,记录着每一个字符及其出现的次数
    11       //遍历对象,找到出现次数最多的字符和次数
    12         var max = 0;
    13         for (var key in o) {
    14           if (max < o[key]) {
    15             max = o[key]; //max始终储存次数最大的那个
    16           }
    17         }
    18         for (var key in o){
    19           if (o[key] == max){
    20           //console.log(key);
    21             console.log("最多的字符是" + key);
    22             console.log("出现的次数是" + max);
    23           }
    24         }
    25     }
    26     remenber("sdoiokasdhdiuwasad");

    2.给出一个数组,数组中的元素最多可以出现两次

     1 function newarr(arr){
     2       var tmp = [];
     3       var str = ",";
     4       for(var i = 0; i < arr.length; i++){
     5           var sm = str.match(new RegExp(","+arr[i]+",", "g"));
     6           if(!sm || sm.length < 2) {
     7               tmp.push(arr[i]);
     8               str += arr[i] + ",";
     9           }
    10       }
    11       console.log("原数组是:" + arr);
    12       console.log("清除后的数组:"+tmp);
    13     }
    14     newarr([12,34,5,6,32,12,34,56,5,12,34]);

    3.给出一个数组,求这个数组的最大和

      如[34,5,1,22],输出534221

    function a(arr){
          var st = [];
          var res = [];
          for(var i=0; i < arr.length; i++){  //将数组元素转换为string类型
            var arr1 = arr[i].toString();
            st.push(arr1);
          }
          console.log(st[1][0]);
          for(var j = 0; j < arr.length-1; j++){ //用冒泡排序将数组的元素的第一个数进行排序的到从小到大的排序
            for(var k = 0; k < arr.length-j-1; k++){
              if(st[j][0] > st[j+1][0]){
                var temp = st[k];
                st[k] = st[k+1];
                st[k+1] = temp;
              }
            }
          }
          for(var c = st.length; c >= 0; c--){//将冒泡排完序后的到的数组进行倒序排序
            res.push(st[c]);
          }
          console.log(res.join(""));//最后合并元素
        }
        a([12,23,34,5]);
    

     4、给一个有序数组创建二叉搜索树

    var Array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 
          var Tree = createTree(Array); 
          console.log(Tree); 
          // 构造一个节点 
          function Node(nodeData, leftData, rightData) { 
            this.nodeData = nodeData; 
            this.leftData = leftData; 
            this.rightData = rightData; 
          } 
          // 每次取中点作为根节点,向左和向右递归 
          function createTree(array) { 
            if (array.length <= 0) { 
              return null; 
            } else { 
              var mid = parseInt(array.length / 2); 
              var node = new Node(array[mid], null, null); 
              var leftArray = array.slice(0 , mid); 
              var rightArray = array.slice(mid + 1 , array.length ); 
              node.leftData = createTree(leftArray); 
              node.rightData = createTree(rightArray); 
              return node; 
            } 
          }
    

    5、JS快速排序

    function quicksort(arr){
           if(arr.length <= 1){
             return arr;
           }
           var mid = Math.floor(arr.length/2);
           //用于确定中间基数在arr中的位置
           var andtwo = arr.splice(mid,1)[0];
           //用于作连接left和right两个数组的中间基数
           var left = [];
           var right = [];
           for(var i = 0; i < arr.length; i++){
             if(arr[i] > andtwo){
               right.push(arr[i]); 
             }else{
               left.push(arr[i]);
             }
           }
           return quicksort(left).concat([andtwo],quicksort(right));
         }
     console.log(quicksort([12,4,43,16,34,76,8,97]));
    

    6、给一个字符串如as-ds-aw-gfde-ioa,用一个函数实现输出结果为as-Ds-Aw-Gfde-Ioa

    function toUp(str){
          var mixstr = str.split("-");//将str拆分
          var res = [mixstr[0]];//创建新数组用于存放转换好的元素,因为第一个不需要转换,所以直接存放进去了
          for(var i = 1; i < mixstr.length; i++){
            var resone = mixstr[i][0].toUpperCase() + mixstr[i].substring(1,mixstr[i].length);//将str里的单个字符串转换成首字母为大写的形式
            res.push(resone);
          }
          var outstr = res.join("-");
          console.log(outstr);
        }
        toUp("as-ds-aw-gfde-ioa");
    

    7、实现一个算法,随机生成指制定长度的字符窜。

      比如给定 长度 8  输出 2debl8xp

  • 相关阅读:
    IIS相关知识
    C#小知识
    DOS与批处理
    Visual Studio与Chrome调试工具使用技巧
    CLR via C# 随记
    jQuery Plugin Docs
    FlexPaper使用小结
    软件测试分为几个阶段 各阶段的测试策略和要求是什么?
    软件产品质量特性是什么?
    简述什么是静态测试、动态测试、黑盒测试、白盒测试、α测试 β测试
  • 原文地址:https://www.cnblogs.com/akun-2017/p/7801442.html
Copyright © 2011-2022 走看看