使用JS在牛客网进行输入输出处理

由于之前参加ACM集训使用C进行刷题,导致思维一直停留在C,很久之前的面试就暴露了这个问题,但是由于自己思维禁锢的原因,加上一直使用的牛客网对JS的输入并不怎么友好,很多时候写好的代码,结果一条数据也没过,这就导致我宁愿去用算法来处理字符串,也不愿意用JS的遍历语法,但是毕竟还是要走前端这条路的,只能在刷题的过程中,强迫自己使用JS。 接下来吐槽一下牛客网的评判机制,当然这也与JS这门语言的性质有关,由于这门语言的变量属性是松散的,一个var就能声明所有类型的变量,这也就导致了它无法像C一样去灵活的读取每一种类型的变量,但是剑指offer这一点做得还是不错的,给个赞。 进入主题,一般的JS怎么写,是这样的:

function f(str) {
          
   

    return str;
}
var str =    ;
console.log(f(str));

或者这样:

function f(str) {
          
   

 
    console.log(str)
}
var str =   ;
f(str);

无论哪一种方式,都有一个相同的特点:输入的变量是固定的,但是评测机给出的数据可不止一条,那么就需要进行一下变动,可以这样:

function f(str) {
          
   

    return str;
}
str = readline()
console.log(f(str));

也可以这样:

str = readline()
    while(str){
          
   
         //balabal
    }
    print(str)

亲测有效。 2020-08-21更新,补充一下数值输入,单单只有字符串输入显然是不够的: 如果是要输入一行整数,例如下面这个例子,分别读取固定三个整数的值:

str = str.split( );
var a = Number(str[0]);
var b = Number(str[1]);
var c = Number(str[2]);

可以测试一下:

var str = "1 2 3";
//str = read_line();
str = str.split( );
var a = Number(str[0]);
var b = Number(str[1]);
var c = Number(str[2]);
console.log("a = ", a);
console.log("b = ", b);
console.log("c = ", c);
a = 1 b = 2 c = 3

结果无误,扩展一下,如果输入使用,来分割的,那么就换成:

str = str.split(,);

根本思想就在于:1、分割2、数值转化、3、数值处理 参考博客:

经验分享 程序员 微信小程序 职场和发展