求助:查找数组中反向排列元素的索引,代码存在问题
问题分析与修正
你的代码逻辑完全走偏了——当前代码是在找自身等于反转的回文字符串(比如"aaa"或者"abba"这种),但你的需求是找数组中与其他元素互为反转的“异类”(比如数组里多数是"apple",唯独一个"elppa",要定位它的索引)。
修正思路
- 先确定数组里的“正常”基准元素:对比前两个元素,如果互为反转,就看第三个元素和谁一致,谁就是基准;如果前两个相同,基准直接取第一个元素。
- 生成基准元素的反转字符串,遍历数组找到匹配这个反转串的元素,返回它的索引。
修正后的代码
function findWrongWayFruit(orchard) { // 确定基准元素 let base; // 处理前两个元素的关系 const reversedFirst = orchard[0].split('').reverse().join(''); if (reversedFirst === orchard[1]) { // 前两个互为反转,用第三个元素确定基准 base = orchard[2] === orchard[0] ? orchard[0] : orchard[1]; } else { // 前两个非反转关系,基准取第一个 base = orchard[0]; } const target = base.split('').reverse().join(''); // 遍历查找目标元素 for (let i = 0; i < orchard.length; i++) { if (orchard[i] === target) { return i; } } // 按需求场景不会走到这里,返回-1作为兜底 return -1; }
测试示例
输入 ["apple", "apple", "elppa", "apple"],函数会返回 2,完全符合你的需求。
内容的提问来源于stack exchange,提问作者hugo wright
相关产品推荐
相关产品推荐

