题目描述:输入一个字符串,以回车结束(字符串长度不超过 100)。
该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。
现需要将其中的某个单词替换成另一个单词,并输出替换之后的字符串。
输入格式
输入共 3 行。
第 1 行是包含多个单词的字符串 s;
第 2 行是待替换的单词 a(长度不超过 100);
第 3 行是 a 将被替换的单词 b(长度不超过 100)。
输出格式
共一行,输出将 s 中所有单词 a 替换成 b 之后的字符串。
输入样例:
You want someone to help you
You
I
输出样例:
I want someone to help you
题解:
Go
package main
import ("fmt"
"strings"
"bufio"
"os"
)
func main(){
scanner:=bufio.NewScanner(os.Stdin)
scanner.Scan()
s:=scanner.Text()
scanner.Scan()
a:=scanner.Text()
scanner.Scan()
b:=scanner.Text()
words:=strings.Split(s," ")
for i:=range words{
if words[i]==a{
words[i]=b
}
}
result := strings.Join(words, " ")
fmt.Println(result)
}
1. 导入必要的包
go
运行
import (
"fmt" // 用于输入输出
"strings" // 用于字符串处理(拆分、拼接等)
"bufio" // 用于读取带空格的完整输入
"os" // 提供标准输入(键盘)的访问
)
2. 主函数(main)执行步骤
(1)创建输入扫描器
go
运行
scanner := bufio.NewScanner(os.Stdin)
- 创建一个
scanner对象,用于读取键盘输入(支持读取带空格的完整行)。 bufio.Scanner:是 Go 标准库bufio包提供的 "输入扫描工具",核心功能是按行读取输入 (遇到回车就结束一行),还能处理带空格的字符串(这是fmt.Scan做不到的)。os.Stdin:是 Go 标准库os包提供的 "标准输入流",代表键盘输入(简单说就是你在终端里敲的内容)。scanner := ...:短变量声明,创建一个名为scanner的变量,类型是bufio.Scanner,并把它和 "键盘输入" 绑定起来。
(2)读取三行输入
go
运行
// 读取第1行:原字符串 s(包含多个单词的句子)
scanner.Scan()
s := scanner.Text()
// 读取第2行:待替换的单词 a
scanner.Scan()
a := scanner.Text()
// 读取第3行:替换后的单词 b
scanner.Scan()
b := scanner.Text()
scanner.Scan():读取一行输入(直到回车结束)。scanner.Text():获取读取到的字符串内容。
(3)拆分原字符串为单词切片
go
运行
words := strings.Split(s, " ")
- 用
strings.Split按空格拆分原字符串s,得到一个单词切片(例如"You want help"拆分为["You", "want", "help"])。
(4)遍历切片,替换目标单词
go
运行
for i := range words {
if words[i] == a { // 找到与待替换单词 a 匹配的单词
words[i] = b // 替换为单词 b
}
}
- 循环遍历每个单词,若与
a完全一致(区分大小写),则替换为b。
(5)拼接单词并输出结果
go
运行
result := strings.Join(words, " ") // 用空格拼接替换后的单词切片
fmt.Println(result) // 输出最终结果
举例验证(输入样例)
plaintext
输入第1行:You want someone to help you
输入第2行:You
输入第3行:I
- 拆分后
words为["You", "want", "someone", "to", "help", "you"]。 - 替换后
words为["I", "want", "someone", "to", "help", "you"]。 - 拼接输出:
I want someone to help you(与样例输出一致)。