牛客网输入输出调试
难搞啊, 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));