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();//先把字符串分解为一个个字符,装进数组里,然后数组倒序

     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    自动代码质量分析示例搭建
    Springboot监听多个端口
    restFul风格调用get、post请求(包含文件上传与下载)
    主机和虚拟机的网络互通设置
    centos7 linux 安装mysql
    【Flutter】ShaderMash 着色器实现渐变色文字
    Git强制还原本地文件到特定的版本
    VS一直显示“正在从以下位置***加载符号”的解决办法
    .net类库
    hyperf json-rpc剖析
  • 原文地址:https://www.cnblogs.com/doudou2018/p/9601857.html
Copyright © 2011-2022 走看看