node.js 远程桌面登陆 方法 深度图像 ruby list algorithm file sharepoint tcp 虚拟机 3d mui vue过滤器 vue数据绑定 vue引入组件 vue滑动事件 java设计模式视频 ppt视频教程下载 jquery遍历子元素 软件测试项目实战案例 java解析json数组 java时间戳 kafka启动命令 mysql配置远程连接 python解析json数据 python搭建网站 python路径设置 数据结构java版 java学习文档 java的泛型 java新建文件 java学习流程 javascript基础 lanhelper rndis驱动下载 eml文件阅读器下载 脚本错误怎么解决 管理文件 win10环境变量
当前位置: 首页 > 学习教程  > 编程语言

go在算法题中的标准输入读取(附相关算法题)

2021/1/28 23:37:57 文章标签:

众所周知,算法题中经常需要处理输入与输出的情况。一般存在以下三种情况,即固定数量字符输入,循环输入,单行输入的情况。 1. 循环输入 示例: for {var str stringn, _ : fmt.Scan(&str)if n 0 {break} } // 使…

众所周知,算法题中经常需要处理输入与输出的情况。一般存在以下三种情况,即固定数量字符输入,循环输入,单行输入的情况。

1. 循环输入

  • 示例:
for {
		var str string
		n, _ := fmt.Scan(&str)
		if n == 0 {
			break
		}
}
// 使用fmt.Scan()时,必须确保输入长度固定,并使用相应变量接收
for {
		var str string
		_, _ = fmt.Scan(&str)
}		
  • 题1:按照一定长度分割字符串并补全
    来源:字符串分割
package main

import (
    "fmt"
)

func main() {
	for {
		var str string
		n, _ := fmt.Scan(&str)
		if n == 0 {
			break
		}

		for len(str) > 8 {
			fmt.Println(str[:8])
			str = str[8:]
		}

		// go生成连续重复字符还要用到for循环,真是糟心
		var s string
		for i := 0; i < 8 - len(str); i++ {
			s = s + "0"
		}
		fmt.Println(str + s)
	}
}

2. 固定长度输入

  • 题2:数字去重与排序
    来源:数字去重与排序
package main

import (
	"fmt"
	"sort"
)

// //通过map键的唯一性去重
func RemoveRepeatElement(nums []int) []int {
	result := make([]int, 0)
	m := make(map[int]bool) // map的值不重要
	for _, v := range nums {
		if _, ok := m[v]; !ok {
			result = append(result, v)
			m[v] = true
		}
	}
	return result
}

func main()  {
	for {
		// 记录输入数据个数
		var n int
		_, _ = fmt.Scanf("%d", &n)
		if n <= 0 {
			break
		}

		// 添加数据到切片中
		var slice []int
		for i := 0; i < n; i++ {
			var num int
			_, _ = fmt.Scanf("%d", &num)
			slice = append(slice, num)
		}
		ret := RemoveRepeatElement(slice) // 去重
		sort.Ints(ret)

		for _, v := range ret {
			fmt.Println(v)
		}
	}
}

3. 读取不定长输入

  • 题3:计算字符串最后一个单词的长度
    来源:字符串最后一个单词的长度
package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)

func main() {
	// 读取标准输入
	inputReader := bufio.NewReader(os.Stdin)  // 返回一个读取器实例Reader
	input, err := inputReader.ReadString('\n') // 按照分隔符读取内容
	if err != nil {
		fmt.Println("输入错误")
	}

	if len(input) == 0 {
		fmt.Println(0)
	}

	strs := strings.Fields(input) // 按照空格分割字符串
	fmt.Println(len(strs[len(strs) - 1]))
}

本文链接: http://www.dtmao.cc/news_show_650254.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?