优化输入扫描以提高性能
针对寻求优化输入读取速度的问题,建议考虑使用 bufio.Scanner通过 fmt.Scan。然而,即使使用 bufio,超时问题仍然存在。
为了解决这个问题,将 fmt.Scan 替换为 bufio.Scanner 并利用自定义转换函数从原始字节中高效提取整数可以显着提高输入读取性能。这是优化的解决方案:
package main import ( "bufio" "fmt" "os" ) func main() { var n, k, c int scanner := bufio.NewScanner(os.Stdin) scanner.Scan() fmt.Sscanf(scanner.Text(), "%d %d", &n, &k) for ; n > 0; n-- { scanner.Scan() if toInt(scanner.Bytes())%k == 0 { c++ } } fmt.Println(c) } func toInt(buf []byte) (n int) { for _, v := range buf { n = n*10 + int(v-'0') } return }
此修改后的代码使用 bufio.Scanner 读取输入行,通过直接从字节解析数字而不是不必要地转换为字符串来优化效率。因此,与其他方法相比,该解决方案实现了显着的性能提升。
以上是如何优化 Go 中的输入扫描以加快整数提取速度?的详细内容。更多信息请关注PHP中文网其他相关文章!