这个测试数据是
45345416 43456645434634
可以发现中间是两个空格,我使用 JS 刷题,JS 中的字符串有一个很方便的 API split 可以将一个字符串按照空格进行分割,所以通常我都是按照下面的方式进行读取
const str='45345416 43456645434634'
const [l,r]=str.split(' ').map(BigInt)
之前也都没遇到过问题,不过今天遇到这个数据,中间有两个空格,这回导致字符串被分成三段
['45345416','','43456645434634']
如果只有一个空格的数据,r 能够取到 43456645434634,两个空格会导致第二个是一个空字符串,经过 BigInt 转换之后为 0n,最终导致计算结果错误
所以需要在 split 之后把空字符串给过滤掉才行
const str='45345416 43456645434634'
const [l,r]=str.split(' ').filter(s=>s!=='').map(BigInt)
另外一种方法是 split 允许使用正则作为参数,所以下面这样也可以,使用正则按照一个或者多个连续空格去分割字符串
const str='45345416 43456645434634'
const [l,r]=str.split(/ +/).map(BigInt)
如果有遇到类似情况的同学,可以参考下,是不是因为这个空格的问题导致 WA 掉的
这还是第一次遇到这种问题,之前遇到过另外一种情况,有的测试用例后面会多一两个空格出来,如果这时候按照的是分割的数组大小去判断长度,就有可能会出现问题,这时候需要用 trim 将每一行的前后空格去掉