js牛客网输入输出调试-(leetcode, yes!)

牛客网输入输出调试

难搞啊, 5道题写完没有1道通过, 怀疑人生… 感觉有必要专门总结下怎么应付牛客.

代码自己调试没错,往牛客网一提交就报错,什么情况?

1. 输入

例题: 找出数组中和为sum的任意两个数

输入例子:
5
1 3 4 6 8
10
输出:
4 6
没找到输出: notfound
已知行数的输入:

输入的是字符串, 虽然它不打引号.

输出的也是字符串, 虽然它还是不打引号…

readline() 读取一行, 字符串格式, 所以parseInt()必不可少.

var str1 = readline();//'5'
var len = parseInt();//5

字符串转数组

var str2 = readline();//第二次读取, '1 3 4 6 8'
var arr = str2.split(' ');//注意此时数组里面还是字符, arr=['1','3',...]
for(var i=0;i<n;i++){
    
    
    arr[i] = parseInt(line[i]);//字符转数字
}
未知行数的输入:
while(readline()){
    
    
	
}

不过怎么牛客官方给的readline()输入语句还自己报错的? 挠头…只能无视了

在这里插入图片描述

2. 输出

还是这个例子:

输入例子:
5
1 3 4 6 8
10
输出:
4 6

本地输出测试没问题:
在这里插入图片描述

提交就:这样

在这里插入图片描述

还有这样:

在这里插入图片描述

在这里插入图片描述

首先, 输出的格式也应是字符串格式! ‘4 6’;
return [arr[i], arr[j]].join(' ');
//或者
return (arr[p] + ' ' + arr[q]);
其次: 不像leetcode只用写函数体不用调用, 牛客里不仅要手动获取输入输出, 还要手动打印, 要么不要封装成函数, 如果封装成了函数一定要手动调用;
最后, 牛客的输入不是函数里的return! 而要手动print或者console.log;
print(getNums(len, arr, sum));

3. 做道题练习下

这次居然初次提交都没报错,一时之间还不太习惯.

判断由"()[]{}"6种括号组成的字符串是否合法
1. 所有括号必须闭合
2. 左括号必须在正确的位置闭合
输入:{[][()()]}
输出: true
var str = readline();
var arr=str.split('');
        //虽然str也可以用String类型的length属性,但是每次使用都涉及到'包装',个人感觉还是转成数组形式遍历比较好
        function isLegal(arr) {
    
    
            var stack = [];
            // for (let i = 0; i < arr.length; i++) {
    
    
            //     obj.arr[i] = 0;
            // }
            var temp;
            for (let i = 0; i < arr.length; i++) {
    
    
                if (arr[i] == '(' || arr[i] == '{' || arr[i] == '[') {
    
    
                    stack.push(arr[i]);
                } else if (arr[i] == ')') {
    
    
                    temp = stack.pop();
                    if (temp != '(') {
    
    
                        return false;
                    }
                } else if (arr[i] == '}') {
    
    
                    var temp = stack.pop();
                    if (temp != '{') {
    
    
                        return false;
                    }
                } else if (arr[i] == ']') {
    
    
                    var temp = stack.pop();
                    if (temp != '[') {
    
    
                        return false;
                    }
                }
            }
            if(stack.length == 0){
    
    //'('的情况
                return true;
            }else{
    
    
                return false;
            }
        }
        console.log(isLegal(arr));

猜你喜欢

转载自blog.csdn.net/Fky_mie/article/details/115960532