特斯拉2023春招笔试题1、2--JS

第一题:

题目描述:

给你两个字符串 s 和 goal ,只要我们可以通过交换 s 中的两个字母得到与 goal 相等的结果,就返回 true ;否则返回 false 。

交换字母的定义是:取两个下标 i 和 j (下标从 0 开始)且满足 i != j ,接着交换 s[i] 和 s[j] 处的字符。

例如,在 "abcd" 中交换下标 0 和下标 2 的元素可以生成 "cbad" 。

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/buddy-strings

解题思路在代码中,见如下代码:

var buddyStrings = function(s, goal) {// 如果字符串长度不等,直接返回 falseif(s.length!==goal.length) return false;// 定义存储下角标的数组let indexList =[];// 将字符串变为值的形式let new_s = s.split('');let new_goal = goal.split('');// 如果字符串不相等 eg.bab 和 abb 将两个下角标存入 indexListfor(var i = 0; i < new_s.length; i++) {if(new_s[i] !== new_goal[i]) {indexList.push(i);}}// 不相等元素构成的数组的长度let num = indexList.length;// 如果是 abac 和 abad 不相等的部分只有一个,indexList 长度为 1,直接返回 falseif(num === 1) return false;// 对字符串去重let reset = [...new Set([...new_s])];// 如果是 aa 和 aa, 它的 indexList 是 0,reset.length 是 1 // 如果是 ab 和 ab, 它的 indexList 是 0,reset.length 是 2// reset.length 是去重后的字符串长度,new_s 是原始字符串长度// 如果 reset.length != new_s.length,说明有重复的元素可以交换返回 true// 如果 reset.length === new_s.length,说明都是单一的元素构成的字符串,返回 falselet same_item = reset.length === new_s.length;// 如果字符串相等,eg.aaab 和 aaab 或者 ab 和 abif(num === 0) return !same_item; // 不一样的元素超过题目规定的两个if(num > 2) return false;// 字符串不相等时,将 indexList 中存储的 下角标 对应的完成元素交换if(num == 2) {// 元素交换let temp = 0;temp = new_s[indexList[0]];new_s[indexList[0]] = new_s[indexList[1]];new_s[indexList[1]] = temp;return new_s.join('') == new_goal.join('');}  
};

第二题:

题目描述:

给你一个字符串 croakOfFrogs,它表示不同青蛙发出的蛙鸣声(字符串 "croak" )的组合。由于同一时间可以有多只青蛙呱呱作响,所以 croakOfFrogs 中会混合多个 “croak” 。

请你返回模拟字符串中所有蛙鸣所需不同青蛙的最少数目。

要想发出蛙鸣 "croak",青蛙必须 依序 输出 ‘c’, ’r’, ’o’, ’a’, ’k’ 这 5 个字母。如果没有输出全部五个字母,那么它就不会发出声音。如果字符串 croakOfFrogs 不是由若干有效的 "croak" 字符混合而成,请返回 -1 。

来源:力扣(LeetCode)

链接:https://leetcode.cn/problems/minimum-number-of-frogs-croaking

解题思路在代码中,见如下代码:

var minNumberOfFrogs = function(croakOfFrogs) {var n = croakOfFrogs.length;// 定义每个字符的计数器var count_c = 0;var count_r = 0;var count_o= 0; var count_a = 0;var count_k = 0;var con = 0;for(var i = 0; i < n; i++) {const index = croakOfFrogs[i];if(index === 'c') count_c++;if(index === "r") count_r++;if(index === "o") count_o++;if(index === "a") count_a++;if(index === "k") count_k++;// 取叫声的最大值con = Math.max(count_c, con);// 如果字符顺序不同,不是有效字符串if(count_c < count_r || count_r < count_o || count_o < count_a || count_a < count_k) return -1;// 在一只青蛙连续叫的时候if (count_k === 1) {count_c--;count_r--;count_o--;count_a--;count_k--;}}if(count_c==count_r&&count_r==count_o&&count_o==count_a&&count_a==count_k) return con;else return -1;
};

本文链接:https://my.lmcjl.com/post/8854.html

展开阅读全文

4 评论

留下您的评论.