問題:
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數(shù)組的長度
? ? 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);//將數(shù)字 j轉換為字符串
? ? ? ? ? j++;//補全缺少的所有字符
? ? ? }
? ? }
? ? return answer;
? ? }else{
? ? ? return undefined;
? ? }
}
思路:
如果只是完成題目养交,那么非常簡單,將字符串轉化為數(shù)字數(shù)組后最后一位減去第一位再加一是否數(shù)組長度相等瓢宦,如果相等則表示不缺少层坠,不等的話用for循環(huán)找出即可。題目只要求找出一位缺少的字母刁笙,但如果是缺少了很多呢破花?
首先在第二個for循環(huán)之前初始化i作為數(shù)組的內元素個數(shù)的限制條件,然后定義j判斷數(shù)組內數(shù)字是否連續(xù)疲吸,在代碼里我加粗的"while(j!=temp[i])"?是最關鍵的地方座每,表示直到 j==temp[i] 時循環(huán)才結束。如果只是用if判斷摘悴,比如”ad“這樣的字符串只會返回”c“峭梳,用while的話會將其中缺少的字符全部返回。