资讯专栏INFORMATION COLUMN

阿里笔试 字符串转化为层级对象

RobinQu / 857人阅读

摘要:问题描述师姐参加阿里的笔试,也跟着去学学名企的编程题都考什么如下格式的一个字符串,要转化成一个有层级关系的对象。

问题描述

师姐参加阿里的笔试,也跟着去学学名企的编程题都考什么?

如下格式的一个字符串,要转化成一个有层级关系的对象。

[abc[def[ghi]]]
{
    value: "abc",
    child: {
        value: "def",
        child: {
            value: "ghi"
        }
    }
}
分析

实现
/**
 * 字符串转换
 * @param  {[type]} string 原始字符串
 * @return {[type]}        带有层级关系的对象
 */
self.transfer = function(string) {
    // 去除首尾字符
    var newStr = self.removeStartAndEnd(string);
    // 获取本字符串的有效值
    var value  = self.getValue(newStr);

    // 初始化嵌套变量
    var nestOrNot = false;
    var child = {};
    
    // 构造返回对象
    var object = {
        value: value
    };

    // 如果嵌套,递归获取属性
    if (self.isNest(newStr)) {
        nestOrNot = true;
        child = self.transfer(self.cutSonString(newStr));
    }

    // 如果嵌套,返回对象添加child属性
    if (nestOrNot) {
        object.child = child;
    }
    
    return object;
};

细节实现

以下是一些对上面用到的方法实现,有兴趣的可以看看,都是一些基本操作:

/**
 * 获取该字符串相关的有效值
 * @param  {[type]} string 原始字符串
 * @return {[type]}        该字符串中的有效值
 */
self.getValue = function(string) {
    if (string.indexOf("[") !== -1) {
        return string.substring(0, string.indexOf("["))
    } else {
        return string;
    }
};

/**
 * 判断是否嵌套
 * @param  {[type]}  string 字符串
 * @return {Boolean}        嵌套true/false
 */
self.isNest = function(string) {
    if (string.indexOf("[") !== -1) {
        return true;
    } else {
        return false;
    }
};

/**
 * 去除字符串首尾的字符
 * @param  {[type]} string 原始字符串
 * @return {[type]}        去除首尾字符字符串
 */
self.removeStartAndEnd = function(string) {
    return string.substring(1, string.length - 1);
};

/**
 * 切割子串
 * @param  {[type]} string 原始字符串
 * @return {[type]}        嵌套的子串
 */
self.cutSonString = function(string) {
    return string.substring(string.indexOf("["), string.lastIndexOf("]") + 1);
};
总结

也算是看过不少笔试题,觉得名企的编程题是最有意义的,多去看看这些名企的题,也能对自身有所提升。

但是不推荐看小公司的笔试题,这些小公司为了显示自己的水平高,然后就把题出的特别难,感觉也没多大的提升,什么动态规划啥的,不会还是不会,笔试就一个小时,要是能写出来估计就去Google了。

当经历的比较多时,框架仅仅是我们的工具,随着现在越来越优秀的设计模式与设计思想,我们学习框架的成本越来越低。

当发现框架千篇一律时,没事想想算法会让我们的思路焕然一新。编程,算法是内功,框架是技能。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97542.html

相关文章

  • 记录一下自己的春招,唯品会、360、京东offer已收、腾讯offer_call已达!!!

    摘要:春招结果五月份了,春招已经接近尾声,因为到了周五晚上刚好有空,所以简单地记录一下自己的春招过程。我的春招从二月初一直持续到四月底,截止今天,已经斩获唯品会电商前端研发部大数据与威胁分析事业部京东精锐暑假实习生的腾讯的是早上打过来的。 春招结果 五月份了,春招已经接近尾声,因为到了周五晚上刚好有空,所以简单地记录一下自己的春招过程。我的春招从二月初一直持续到四月底,截止今天,已经斩获唯品...

    freewolf 评论0 收藏1
  • [ 前端笔试 ] 2016阿里巴巴校招前端笔试部分试题 ( 持续更新...)

    摘要:更新图片单击可放大第题第题第题第题第题第题第题忘了第题第题后面几题没截到图啊。实现格式化输出,比如输入,输出为运用设置读取删除写个函数啥的给出,叫你添加完成一个样式设置,感觉比较简单,可能掉坑了。明天要考的同学也可以看看题型。 2015.4.1 更新 【图片单击可放大】 第1题 showImg(https://segmentfault.com/img/bVleCL); ...

    defcon 评论0 收藏0
  • 我的春招求职经验分享(已拿阿里京东网易等 5 个 offer)

    摘要:面经因为我完全没有面试经验,从来没有经历过面试,于是想着在去这类大公司面试之前先找成都的小公司练练手,积累点面试经验。于是三月份开始就有成都的小公司开始约我面试。 前序 从我高考成绩出来那一刻开始,从我在高考志愿上填上计算机科学与技术这几个当时在心中堪称神圣的几个字开始,我就已经把进入中国互联网最高殿堂BAT作为我整个大学奋斗的目标,哪怕我就读的是一所位于内陆的双非一本大学我也认为我能...

    Winer 评论0 收藏1
  • 如何准备校招技术面试

    摘要:网易跨境电商考拉海购在线笔试现场技术面面。如何看待校招面试招聘,对公司而言,是寻找劳动力对员工而言,是寻找未来的同事。 如何准备校招技术面试 标签 : 面试 [TOC] 2017 年互联网校招已近尾声,作为一个非 CS 专业的应届生,零 ACM 经验、零期刊论文发表,我通过自己的努力和准备,从找实习到校招一路运气不错,面试全部通过,谨以此文记录我的校招感悟。 写在前面 写作动机 ...

    MkkHou 评论0 收藏0

发表评论

0条评论

RobinQu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<