codecamp

字符串移动插入算法挑战

方法一:

function translate(str) {

  
  var way = ['a','e','i','o','u'];     //把五个元音字母放到一个数组里
  if (way.indexOf(str[0]) >= 0){     //当单词第一个字母能在元音字母中找到时,词尾添加‘way’(在way中被找到的话,indexOf返回的值一定>=0)
     str +='way';

    
  }
  else{
    for (var i = 0;i < str.length;i++){
      if(way.indexOf(str[i]) >= 0){     //否则使用for循环遍历str字符串,寻找到第i个是元音字母
        str = str.substr(i)+str.substr(0,i)+'ay';     //从第i个开始截取,同时把前头的都放到词尾,再加上‘ay’,然后跳出循环
        break;
      }
    }

    

    
  }
  return str;
}




translate("california");

方法二:

function translate(str) { //主体函数
  var num=getnum(str);  //搜索结果
  if ( num==-1 ){
    return "没有元音";
  }else if( num==0 ){
    return str+"way";
  }else{
    return str.substring(num,str.length)+str.substring(0,num)+"ay";
  }
}


function getnum(str){   //搜索str中是否有元音字母
  return search(str,"a","e","i","o","u");
};


function search(){  //搜索是否含有一些字符,有就返回序号,否则返回-1
  var str=[].shift.apply(arguments);
  var n;
  var flag=true;
  for(var i=0,l=arguments.length;i<l;i++){
    var nth=str.indexOf(arguments[i]);
    if( nth>-1 ){
      n=(n==undefined)?nth:(n<nth?n:nth);    
      flag=false;
    }
  }
  return flag?-1:n;
};


translate("consonant");

方法三:

function translate(str){
  var str2=str.replace(/[aeiou]/g,"|");
  var index=str2.indexOf("|");
  if ( index==-1 ){
    return "没有元音";
  }else if( index==0 ){
    return str+"way";
  }else{
    return str.substring(index,str.length)+str.substring(0,index)+"ay";
  }
}


translate("consonant");

方法四:

function translate(str) {
  var vStr = 'aeiou',
      ends = ['way','ay'],
      i = 0,
      cStr='';
  while(str.charAt(i)!==undefined && vStr.indexOf(str.charAt(i))<0){
    cStr += str.charAt(i);
    i++;
  }
  if(cStr.length>0){
    return str.substr(cStr.length) + cStr + ends[1];
  }else{
    return str + ends[0];   
  }
}


translate("consonant");
查询替换算法挑战
字符配对算法挑战
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定