如何在测试用例示例中检查javascript中的表达式是否正确?
我有以下测试用例,在这些测试用例中,我需要用javascript对正确的表达式进行分类如何在测试用例示例中检查javascript中的表达式是否正确?,javascript,Javascript,我有以下测试用例,在这些测试用例中,我需要用javascript对正确的表达式进行分类 (a) correct ((a)) correct (a(b)) correct (b) correct (b incorrect 你可以看到最后一个是不正确的表达。我们如何通过javascript实现这一点呢?这是一个略加编辑的答案 这是一个略加修改的答案 您需要使用一个简单的堆栈来存储左括号。以下是一个简短的解释: 将字符串转换为字符数组 创建一个空堆栈 迭代每个字符: 如果字符不是圆括号
(a) correct
((a)) correct
(a(b)) correct
(b) correct
(b incorrect
你可以看到最后一个是不正确的表达。我们如何通过javascript实现这一点呢?这是一个略加编辑的答案
这是一个略加修改的答案
您需要使用一个简单的
堆栈来存储左括号。以下是一个简短的解释:
将字符串转换为字符数组
创建一个空堆栈
迭代每个字符:
- 如果字符不是圆括号,请继续下一次迭代
- 如果是左括号,则将其存储在堆栈中
- 如果是右括号,则有两种可能性:
- 如果堆栈中没有对应的左括号,则该字符串无效
- 如果有,则弹出相应的对括号并正常继续
t1='(a)'、t2='((b))、t3='(a(b))、t4='(b');
常量isValid=(str)=>{
让字符=str.split(“”);
让堆栈=[];
for(设i=0;i console.log(isValid(t4));
您需要使用一个简单的堆栈来存储左括号。下面是一个简要说明:
将字符串转换为字符数组
创建一个空堆栈
迭代每个字符:
- 如果字符不是圆括号,请继续下一次迭代
- 如果是左括号,则将其存储在堆栈中
- 如果是右括号,则有两种可能性:
- 如果堆栈中没有对应的左括号,则该字符串无效
- 如果有,则弹出相应的对括号并正常继续
t1='(a)'、t2='((b))、t3='(a(b))、t4='(b');
常量isValid=(str)=>{
让字符=str.split(“”);
让堆栈=[];
for(设i=0;i console.log(isValid(t4));
如果他们想检查字符串,那么我只需在字符串上循环。我会有一个变量(characterCount
),它为每个“(“character”和每个“)添加一个。如果最终结果为0,则格式正确
编辑:我还需要检查characterCount
是否为负数,这意味着格式不正确
如果是面试,请他们澄清。提问的程序员比假设的程序员更有价值(并且花费数小时的宝贵时间编写错误的功能)
函数检查格式(str){
const END\u CHARACTER\u BEFORE\u START\u CHARACTER=CORRECT\u FORMATTING=0;
让characterCount=正确的\u格式;
让startCharacter='(';
让endCharacter=');
for(设i=0;i checkFormatting(')a(“);//false
如果他们想检查字符串,那么我只需在字符串上循环。我会有一个变量(characterCount
),它为每个“('character')添加一个,并为每个“')减去一个。如果最终结果为0,则格式正确
编辑:我还需要检查characterCount
是否为负数,这意味着格式不正确
如果是面试,请他们澄清。提问的程序员比假设的程序员更有价值(并且花费数小时的宝贵时间编写错误的功能)
函数检查格式(str){
const END\u CHARACTER\u BEFORE\u START\u CHARACTER=CORRECT\u FORMATTING=0;
让characterCount=正确的\u格式;
让startCharacter='(';
让endCharacter=');
for(设i=0;i checkFormatting(')a((');//false
处理其他类型的方括号-{}、[]和()
<
function check(expr){
const holder = []
const openBrackets = ['(']
const closedBrackets = [')']
for (let letter of expr) { // loop trought all letters of expr
if(openBrackets.includes(letter)){ // if its oppening bracket
holder.push(letter)
}else if(closedBrackets.includes(letter)){ // if its closing
const openPair = openBrackets[closedBrackets.indexOf(letter)] // find his pair
if(holder[holder.length - 1] === openPair){ // check if that pair is last element in array
holder.splice(-1,1) //if so, remove it
}else{ // if its not
holder.push(letter)
break // exit loop
}
}
}
if(holder.length === 0)
{
console.log("correct");
}
else{
console.log("incorrect");
}
}
check('(a)') /// give the string you want to check here