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