1、解析器
请你设计一个可以解释字符串 command
的 Goal 解析器 。command
由 "G"
、"()"
和/或 "(al)"
按某种顺序组成。Goal 解析器会将 "G"
解释为字符串 "G"
、"()"
解释为字符串 "o"
,"(al)"
解释为字符串 "al"
。然后,按原顺序将经解释得到的字符串连接成一个字符串。
给你字符串 command
,返回 Goal 解析器 对 command
的解释结果。
/**
* @param {string} command
* @return {string}
*/
var interpret = function(command) {
var length=command.length;
var resultString='';
for(let i=0;i<length;i++)
{
if(command[i]==='G')
{
resultString+='G';
}
if(command[i]==='(')
{
if(command[i+1]===')')
{
resultString+='o';
}
else{
resultString+='al';
}
}
}
return resultString;
};
// var command = "G()(al)";
// var command = "G()()()()(al)";
var command = "(al)G(al)()()G";
console.log(interpret(command));
输出截图:
2、字母异位词
网址:242. 有效的字母异位词 - 力扣(Leetcode)https://leetcode.cn/problems/valid-anagram/
给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
思路:先统计字符串字母出现的个数,然后进行比较。长度不一样,绝对不是字母异位词,直接false输出即可。
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isAnagram = function(s, t) {
var map=new Map();
if(s.length!==t.length)
{
return false;
}
for(let i=0;i<s.length;i++)
{
if(map.has(s[i])){
var count=map.get(s[i]);
count++;//出现一次加一
map.set(s[i],count);
}
else{
map.set(s[i],1);
}
}
for(let j=0;j<t.length;j++)
{
//判断t是否有s里的字母以及出现次数是否相等
if(map.has(t[j])&&map.get(t[j])>0){
var count=map.get(t[j]);
count--;
map.set(t[j],count);
}
else{
return false;
}
}
return true;
};
提交截图: