我一直在研究一种算法,该算法采用字母顺序的字母序列,如果缺少一个字符,它将返回该字符。
例如:fearNotLetter("abcdfg")
将返回"e"
。
我的问题是:
此解决方案背后的逻辑是什么?
为什么在这里以及如何使用正则表达式?
for循环中的条件如何工作?
function fearNotLetter(str) {
var allChars = '';
var notChars = new RegExp('[^'+str+']','g');
for (var i = 0; allChars[allChars.length-1] !== str[str.length-1] ; i++)
allChars += String.fromCharCode(str[0].charCodeAt(0) + i);
return allChars.match(notChars) ? allChars.match(notChars).join('') : undefined;
}
答案 0 :(得分:2)
function fearNotLetter(str) {
var allChars = '';
var notChars = new RegExp('[^'+str+']','g'); //1
for (var i = 0; allChars[allChars.length-1] !== str[str.length-1] ; i++)//2
allChars += String.fromCharCode(str[0].charCodeAt(0) + i);
return allChars.match(notChars) ? allChars.match(notChars).join('') : undefined; //3
}
!abcdfg
g
=> abcdefg
然后将其与match
方法进行比较,将字符串与提供的文本进行字符串比较:
你可以思考的愚蠢方式
abcdefg - abcdfg
,然后您将得到e
,如果缺少多个字符,它将与join方法连接。