由于之前参加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、数值处理
参考博客:https://www.nowcoder.com/discuss/276