javascript - 在字符数组中查找缺失的字符 (javascript)
问题描述
我正在尝试编写一个函数,该函数接受单个字符数组(例如['a','b','d'])并返回丢失的第一个字符(例如'c')。我不确定为什么我当前的功能不像描述的那样工作。
const alph = "abcdefghijklmnopqrstuvwxyz";
const findMissingLetter = (arr) => {
arr.forEach((l, i, a) => {
const ltrIdx = alph.indexOf(l); //a's index in the alph is 0
const arrNxtLtr = a[i+1]; //the next ltr after a is c
if(arrNxtLtr !== alph[ltrIdx + 1]) return alph[ltrIdx + 1] //return the letter that is missing from the arr
})
return -1 //return -1 if there is no missing char
}
console.log(findMissingLetter(['a','c']))
附言。我见过类似的方法来解决这个一般问题,我只是想知道我的功能做错了什么,所以我可以学习。
谢谢!
解决方案
如果您只是想找到两个字符串之间的第一个不匹配项,那么只需逐个字符地比较它们,直到找到不匹配项或到达输入字符串的末尾:
const alph = "abcdefghijklmnopqrstuvwxyz";
const findMissingLetter = (arr) => {
for(let i=0; i<arr.length; i++) {
if(arr[i] !== alph[i]) {
return alph[i]; // found the first mismatch
}
}
return -1 // return -1 if there is no missing char
}
console.log(findMissingLetter([]),"-1?");
console.log(findMissingLetter(['a']),"-1?");
console.log(findMissingLetter(['b']),"a?");
console.log(findMissingLetter(['a','b']),"-1?");
console.log(findMissingLetter(['a','c']),"b?");
并且避免forEach()
如果你想从循环内部返回,因为它已经被评论了。
如果输入字符串不必从“大”字符串的开头开始,找到它的第一个字符并从那里进行比较:
const alph = "abcdefghijklmnopqrstuvwxyz";
const findMissingLetter = (arr) => {
if(arr.length===0)
return -1;
let start = alph.indexOf(arr[0]);
for(let i=0; i<arr.length; i++) {
if(arr[i] !== alph[start+i]) {
return alph[start+i]; // found the first mismatch
}
}
return -1 // return -1 if there is no missing char
}
console.log(findMissingLetter([]),"-1?");
console.log(findMissingLetter(['a']),"-1?");
console.log(findMissingLetter(['b']),"-1?");
console.log(findMissingLetter(['a','b']),"-1?");
console.log(findMissingLetter(['a','c']),"b?");
console.log(findMissingLetter(['b','c','e','f']),"d?");
推荐阅读
- javascript - 地图
没有被映射 - php - CakePHP 3 修改控制器中请求数据的正确方法
- postgresql - 使用许多常见的子表达式进行更新
- postgresql - 如何正确设置逻辑 postgresql 复制(两种方式)?
- java - 如何使用 RecyclerView 在编辑模式下显示选中的项目?
- apache - 在 odoo 中使用 apache2 和 wsgi 为单个域设置 ssl,但服务器有多个域
- javascript - 为什么我不能从模块外部引用属性集?
- python - 日历算法
- templates - openshift编写模板根据条件创建路线
- jquery - 我如何覆盖 jquery show() 事件?