教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 牛客网做算法题时go语言读取标准输入的方法

牛客网做算法题时go语言读取标准输入的方法

发布时间:2021-12-23   编辑:jiaochengji.com
教程集为您提供牛客网做算法题时go语言读取标准输入的方法等资源,欢迎您收藏本站,我们将为您提供最新的牛客网做算法题时go语言读取标准输入的方法资源
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"/></svg>

最近由于面试需要使用牛客网的 OJ 系统,感觉特别不习惯。之前都是在 leetcode 上做算法题,所以对需要自己处理输入输出的方式特别不熟悉,捣鼓了好一小会。这里做一个小记录,也是一个分享吧。

算法题demo:a b

<pre><code>每行包含两个整数a和b 对于每行输入对应输出一行a和b的和 输入 1 5 输出 6 </code></pre> <h2>方法一:使用fmt.Scan按空格读取</h2>

fmt.Scan 只识别空格,同时会将换行判断为空格,做法如下(牛客官网示例)

<pre><code class="lang-go hljs"><span class="token keyword">package</span> main <span class="token keyword">import</span> <span class="token punctuation">(</span> <span class="token string">"fmt"</span> <span class="token string">"io"</span> <span class="token punctuation">)</span> <span class="token keyword">func</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> a<span class="token punctuation">,</span> b <span class="token builtin">int</span> <span class="token keyword">for</span> <span class="token punctuation">{</span> <span class="token boolean">_</span><span class="token punctuation">,</span> err <span class="token operator">:=</span> fmt<span class="token punctuation">.</span><span class="token function">Scan</span><span class="token punctuation">(</span><span class="token operator">&</span>a<span class="token punctuation">,</span> <span class="token operator">&</span>b<span class="token punctuation">)</span> <span class="token keyword">if</span> err <span class="token operator">==</span> io<span class="token punctuation">.</span>EOF <span class="token punctuation">{</span> <span class="token keyword">break</span> <span class="token punctuation">}</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>a <span class="token operator"> </span> b<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre> <h2>
方法二:使用bufio.NewScanner(os.Stdin)按行读取</h2>

对于有的算法题,使用 fmt.Scan 按空格读取是无法处理输入数据的。比方说输入为 “a s d f-q w e r”,"-" 的左右部分内容是一组输入,这需要我们去掉"-"。这时我们就可以使用 bufio.NewScanner(os.Stdin) 按行读取。还是以 ‘a b’ 举例,如下:

<pre><code class="lang-go hljs"><span class="token keyword">package</span> main <span class="token keyword">import</span> <span class="token punctuation">(</span> <span class="token string">"bufio"</span> <span class="token string">"fmt"</span> <span class="token string">"os"</span> <span class="token string">"strconv"</span> <span class="token string">"strings"</span> <span class="token punctuation">)</span> <span class="token keyword">func</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> a<span class="token punctuation">,</span> b <span class="token builtin">int</span> input <span class="token operator">:=</span> bufio<span class="token punctuation">.</span><span class="token function">NewScanner</span><span class="token punctuation">(</span>os<span class="token punctuation">.</span>Stdin<span class="token punctuation">)</span> <span class="token keyword">for</span> input<span class="token punctuation">.</span><span class="token function">Scan</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> a<span class="token punctuation">,</span> <span class="token boolean">_</span> <span class="token operator">=</span> strconv<span class="token punctuation">.</span><span class="token function">Atoi</span><span class="token punctuation">(</span>strings<span class="token punctuation">.</span><span class="token function">Split</span><span class="token punctuation">(</span>input<span class="token punctuation">.</span><span class="token function">Text</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token string">" "</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">)</span> b<span class="token punctuation">,</span> <span class="token boolean">_</span> <span class="token operator">=</span> strconv<span class="token punctuation">.</span><span class="token function">Atoi</span><span class="token punctuation">(</span>strings<span class="token punctuation">.</span><span class="token function">Split</span><span class="token punctuation">(</span>input<span class="token punctuation">.</span><span class="token function">Text</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token string">" "</span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span> fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>a<span class="token operator"> </span>b<span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> </code></pre> 到此这篇关于“牛客网做算法题时go语言读取标准输入的方法”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
牛客网做算法题时go语言读取标准输入的方法
Go 语言十年而立,Go2 蓄势待发
Go语言开发必读书目,从菜鸟到大牛必备
Golang库集合
Go语言的几大优势和特性
Golang 基础教程
Go 开发关键技术指南 | 为什么你要选择 Go?(内含超全知识大图)
[GO语言基础] 一.为什么我要学习Golang以及GO语言入门普及
go run main.go 参数_Go语言入门:Hello world
go 语言学习历程

[关闭]
~ ~