首页 > 试题广场 >

多组_带空格的字符串_T组形式

[编程题]多组_带空格的字符串_T组形式
  • 热度指数:9523 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定 t 组询问,每次给出一个长度为 n 的带空格的字符串 s ,请你去掉空格之后,将其倒置,然后输出。

输入描述:
第一行有一个整数 t\ (\ 1 \leq t \leq 10^5\ )
随后 t 组数据。
每组的第一行有一个整数 n\ (\ 1 \leq n \leq 10^5\ )
每组的第二行有一个字符串 s,仅包含小写英文字符和空格,保证字符串首尾都不是空格。
保证 \sum n \leq 10^5


输出描述:
输出 t 行,每行一个字符串,代表倒置后的字符串 s
示例1

输入

3
9
one space
11
two  spaces
14
three   spaces

输出

ecapseno
secapsowt
secapseerht
package main

import (
	"bufio"
	"bytes"
	"fmt"
	"os"
	"strconv"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	var buf bytes.Buffer

	// 读取测试用例数量 t
	t, _ := strconv.Atoi(readLine(reader))

	for i := 0; i < t; i++ {
		// 读取每组数据的 n
		_, _ = strconv.Atoi(readLine(reader))

		// 读取字符串 s
		s := readLine(reader)

		// 移除字符串中的空格
		s = removeSpaces(s)

		// 倒置字符串
		reversed := reverseString(s)

		// 缓存输出结果
		buf.WriteString(reversed)
		buf.WriteString("\n")
	}

	// 一次性输出所有结果
	fmt.Print(buf.String())
}

// 读取一行输入
func readLine(reader *bufio.Reader) string {
	line, _ := reader.ReadString('\n')
	return line[:len(line)-1] // 去掉换行符
}

// 移除字符串中的空格
func removeSpaces(s string) string {
	return strings.ReplaceAll(s, " ", "")
}

// 倒置字符串
func reverseString(s string) string {
	bytes := []byte(s)
	for left, right := 0, len(bytes)-1; left < right; left, right = left+1, right-1 {
		bytes[left], bytes[right] = bytes[right], bytes[left]
	}
	return string(bytes)
}

发表于 2025-03-17 22:03:44 回复(0)