zoukankan      html  css  js  c++  java
  • Confirm the Ending

    confirmEnding("Bastian", "n")应该返回 true.
    confirmEnding("Connor", "n") 应该返回 false.
    confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification")应该返回 false
    confirmEnding("He has to give me a new name", "name") 应该返回 true.
    confirmEnding("He has to give me a new name", "me") 应该返回 true.
    confirmEnding("He has to give me a new name", "na") 应该返回 false.
    confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") 应该返回 false.

     方法一、(自己写的)

     把问题大致看成两方面。如果是一个单词,那么直接调用sbustr(-1),来验证;
    如果是一句话,单词间有空格,那么我先把它转为数组并去掉空格,来获取最后一个单词,然后利用substr(),截取最后一个元素与传参(target)相同长度的字串长度,做判断
    function confirmEnding(str, target) {
      // 请把你的代码写在这里
      //先转数组,拿出最后一个字符的长度
      
     if(str.indexOf(" ")==-1){
       //没有空格,单独一个单词
       var lastChar=str.substr(-1,1);
       if(lastChar==target){
         return true;
       }else{
         return false;
       }
     }else{//转为数组,找到最后一个元素
       var array=str.split(" ");
       //返回最后一个元素
      var lastEle=array[array.length-1];
       if(lastEle.substr(lastEle.indexOf(target))==target){
         return true;
       }else{
         return false;
       } 
     }
    }
    显然每一个判断有一相同部分,都调用了substr()方法,抽象为一条代码
     
    方法二、
     
     
    function confirmEnding(str, target) {
      if ( str.substr(str.length-target.length , str.length) === target) {//也可以直接调用 str.substr(str.length-target.length)==target;判断
        return true;
      }else {
        return false;
      }
    }
    
    confirmEnding("Bastian", "n");

    方法三、

    取巧,我们倒序然后把字符串一个一个字符的分解出来,从头开始判断与target相同长度范围内,头部元素是否完全相同

    function confirmEnding(str, target) {
      // "Never give up and good luck will find you."
      // -- Falcor
      var new_str = str.split("").reverse();
      var new_target = target.split("").reverse();
      for(var i = 0; i < new_target.length; i++){
        if(new_target[i] != new_str[i]){
          return false;
        }
      }
     
      return true;
    }
     
    confirmEnding("He has to give me a new name", "name");

    str.split("").reverse();//先把字符串分解为一个个字符,装进数组里,然后数组倒序

     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    金蝶报错事项
    ROS的脚本多拨
    zabbix4.0 相关的拓扑图及centos的虚拟配置
    ros开启快速转发模式
    linux 配置 l2tp-client
    linux 系统管理 实战技巧
    Flunetd 用于统一日志记录层的开源数据收集器
    在Centos7 更改Docker默认镜像和容器的位置
    Supervisor: 进程控制系统
    如何用正确的姿势查看 主机系统的CPU信息
  • 原文地址:https://www.cnblogs.com/doudou2018/p/9601857.html
Copyright © 2011-2022 走看看