• 呼叫转移


    • 用户被呼叫时的状态有4种:idlebusyno-responseunreachable
    • 用户可登记的5种呼叫转移,格式为type number,type代表转移种类, number代表转移号码:
      type为 0:无条件转移,优先级最高,用户处于任何状态都触发此转移
      type为 1:用户状态busy时触发此转移
      type为 2:用户状态no-response时触发此转移
      type为 3:用户状态unreachable时触发此转移
      type为 4:默认转移,优先级最低,用户不是idle状态时,且无法触发上述四种转移,触发此转移

    注:同一个状态可登记多次,以最后一次登记为准。

    现给出某一用户当前的用户状态,以及其登记的若干个呼叫转移号码,请输出最终的呼叫结果:

    • 若发生转移,则输出转移号码
    • 若用户状态为idle,且未发生转移时,则呼叫本机成功,输出success
    • 若呼叫失败:既没有发生转移,也没有呼叫本机成功,则输出failure。例如,用户状态为 busy,但用户既未登记 type 为 0 或 1 或 4 的呼叫转移,则呼叫失败。

    解答要求

    时间限制:1000ms, 内存限制:256MB

    输入

    第一行是数字 num 和 字符串 status:num代表呼叫转移登记的次数( 0 < N <= 20),status表示用户被呼叫时的状态。
    接下来 num 行是用户的呼叫转移登记操作,转移号码长度 6-15位,用例保证输入合法。

    输出

    一个字符串,代表最终的呼叫结果

    样例

    输入样例 1:

    3 busy
    2 18912345678
    4 18912345678
    4 13312345567
    

    输出样例 1:

    13312345567
    

    输入样例 2:

    1 no-response
    3 075587678100
    

    输出样例 2:

    failure
    

    输入样例 3:

    1 idle
    3 075587678100
    

    输出样例 3:

    success
    

    提示

    答题要求:结果可信和过程可信同样重要,您编写的代码需要符合可信的要求(包括通用编码规范、安全编码规范和圈复杂度)。

    function calling(status, regCallForwardNums) {
    let statusList = new Map([['busy','1'],['no-response','2'],['unreachable','3']])
    let mapList = new Map(regCallForwardNums);
    let curNum = statusList.get(status);
    //用户状态为idle,且没有登记无条件转移,呼叫成功
    if(status === 'idle' && !mapList.has('0')) {
    return 'success'
    }
    if(mapList.has('0')) {//优先处理无条件转移
    return mapList.get('0')
    }else if(mapList.has(curNum)) {//再处理busy、no-response、unreachable状态转移
    return mapList.get(curNum)
    }else if(mapList.has('4')){//如果以上4种状态转移都不存在,采用默认转移
    return mapList.get('4')
    }else {
    return 'failure'
    }
    }

  • 相关阅读:
    1265 四点共面
    1003 阶乘后面0的数量
    1080 两个数的平方和
    1090 3个数和为0
    1087 1 10 100 1000
    1082 与7无关的数
    OpenLayers工作原理
    CI(持续集成)CD(持续交付)
    打包命令
    文件与目录管理重点
  • 原文地址:https://www.cnblogs.com/gongxianjin/p/16068702.html
Copyright © 2020-2023  润新知