Javascript Leetcode:为什么我的函数会说它';It’屈服是错误的,但其他地方都是正确的?

Javascript Leetcode:为什么我的函数会说它';It’屈服是错误的,但其他地方都是正确的?,javascript,Javascript,问题陈述: 给定两个小写字母的字符串A和B,如果可以交换A中的两个字母使结果等于B,则返回true,否则返回false。交换字母定义为采用两个索引i和j(0索引),以便i!=并在A[i]和A[j]处交换字符。例如,在“abcd”中的索引0和2处交换会导致“cbad” 所以提交文件说它返回了false,但其他编译器都说它运行true,这有什么不对?在leetcode论坛上很难找到答案,因此我不得不在这里提问: const characterMap={}; 设foundSwap=false; va

问题陈述:

给定两个小写字母的字符串A和B,如果可以交换A中的两个字母使结果等于B,则返回true,否则返回false。交换字母定义为采用两个索引i和j(0索引),以便i!=并在A[i]和A[j]处交换字符。例如,在
“abcd”
中的索引0和2处交换会导致
“cbad”

所以提交文件说它返回了false,但其他编译器都说它运行true,这有什么不对?在leetcode论坛上很难找到答案,因此我不得不在这里提问:

const characterMap={};
设foundSwap=false;
var buddyStrings=函数(A,B){
如果(A.length!==B.length)返回false;
如果(A==B){
设repeatMap={};
让foundDouble=false;
[…A].forEach(char=>{
if(repeatMap[char]==未定义){
repeatMap[char]=1;
}否则{
repeatMap[char]++;
}
if(repeatMap[char]>1){
foundDouble=true;
}
});
双倍回报;
};
for(设i=0;ilog(buddyStrings('de','ed')
您需要生成
characterMap
foundSwap
局部变量。否则,它们会保留上一次调用函数时的状态,如果调用两次,则会导致错误的结果

一般来说,“leet”编码器应该避免使用全局变量,除非真的需要

var buddyStrings=函数(A,B){
常量characterMap={};
设foundSwap=false;
如果(A.length!==B.length)返回false;
如果(A==B){
设repeatMap={};
让foundDouble=false;
[…A].forEach(char=>{
if(repeatMap[char]==未定义){
repeatMap[char]=1;
}否则{
repeatMap[char]++;
}
if(repeatMap[char]>1){
foundDouble=true;
}
});
双倍回报;
};
for(设i=0;ilog(buddyStrings('de','ed')
您需要生成
characterMap
foundSwap
局部变量。否则,它们会保留上一次调用函数时的状态,如果调用两次,则会导致错误的结果

一般来说,“leet”编码器应该避免使用全局变量,除非真的需要

var buddyStrings=函数(A,B){
常量characterMap={};
设foundSwap=false;
如果(A.length!==B.length)返回false;
如果(A==B){
设repeatMap={};
让foundDouble=false;
[…A].forEach(char=>{
if(repeatMap[char]==未定义){
repeatMap[char]=1;
}否则{
repeatMap[char]++;
}
if(repeatMap[char]>1){
foundDouble=true;
}
});
双倍回报;
};
for(设i=0;ilog(buddyStrings('de','ed')代码的问题源于这样一个事实,即在调用方法之间,您在函数外部维护一些状态。使用相同的输入调用该方法两次会给出不同的答案。因此,当leetcode使用不同的输入调用您的方法时,它会得到您不期望的结果

const characterMap={};
设foundSwap=false;
var buddyStrings=函数(A,B){
如果(A.length!==B.length)返回false;
如果(A==B){
设repeatMap={};
让foundDouble=false;
[…A].forEach(char=>{
if(repeatMap[char]==未定义){
repeatMap[char]=1;
}否则{
repeatMap[char]++;
}
if(repeatMap[char]>1){
foundDouble=true;
}
});
双倍回报;
};
for(设i=0;ilog(buddyStrings('de','ed')代码的问题源于这样一个事实,即在调用方法之间,您在函数外部维护一些状态。使用相同的输入调用该方法两次会给出不同的答案。因此,当leetcode使用不同的输入调用您的方法时,它会得到您不期望的结果

const characterMap={};
设foundSwap=false;
var buddyStrings=函数(A,B){
如果(A.length!==B.length)返回false;
如果(A==B){
设repeatMap={};
让foundDouble=false;
[…A].forEach(char=>{
if(repeatMap[char]==未定义){
repeatMap[char]=1;
}否则{
repeatMap[char]++;
}
if(repeatMap[char]>1){
foundDouble=true;
}
});
双倍回报;
};
for(设i=0;i