问题:
FreeCodeCamp--从传递进来的字母序列中找到缺失的字母并返回它。
如果所有字母都在序列中,返回 undefined。
代码:
function fearNotLetter(str) {
var temp=[];
var answer="";
for(var i=0;i<str.length;i++){
temp[i]=str.charCodeAt(i);
}
var len=temp.length;//temp数组的长度
if ((temp[len-1]-temp[0])>=len){
i=0;//初始化i
for(var j=temp[0];j<temp[len-1]&&i<len;j++,i++){
while(j!=temp[i]){
answer+=String.fromCharCode(j);//将数字 j转换为字符串
j++;//补全缺少的所有字符
}
}
return answer;
}else{
return undefined;
}
}
思路:
如果只是完成题目,那么非常简单,将字符串转化为数字数组后最后一位减去第一位再加一是否数组长度相等,如果相等则表示不缺少,不等的话用for循环找出即可。题目只要求找出一位缺少的字母,但如果是缺少了很多呢?
首先在第二个for循环之前初始化i作为数组的内元素个数的限制条件,然后定义j判断数组内数字是否连续,在代码里我加粗的"while(j!=temp[i])" 是最关键的地方,表示直到 j==temp[i] 时循环才结束。如果只是用if判断,比如”ad“这样的字符串只会返回”c“,用while的话会将其中缺少的字符全部返回。