首页 > 试题广场 >

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

[编程题]多组_带空格的字符串_T组形式
  • 热度指数:18284 时间限制: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"
	"fmt"
	"os"
	"strconv"
)

func main() {
	sc := bufio.NewScanner(os.Stdin)
	sc.Buffer(make([]byte, 1024*1024), 1024*1024) // 增加缓冲区大小
	sc.Scan()
	t, _ := strconv.Atoi(sc.Text())
	
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()
	
	for i := 0; i < t; i++ {
		sc.Scan()
		_ = sc.Text() // 读取n,但不需要使用
		sc.Scan()
		s := sc.Text()
		
		// 预分配足够的内存
		result := make([]byte, 0, len(s))
		
		// 从后向前遍历,跳过空格
		for j := len(s) - 1; j >= 0; j-- {
			if s[j] != ' ' {
				result = append(result, s[j])
			}
		}
		
		writer.WriteString(string(result))
		writer.WriteByte('\n')
	}
}


package main

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

func main() {
	sc := bufio.NewScanner(os.Stdin)
	sc.Buffer(make([]byte, 1024*1024), 1024*1024)
	sc.Scan()
	t, _ := strconv.Atoi(sc.Text())
	
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()
	
	for i := 0; i < t; i++ {
		sc.Scan()
		_ = sc.Text()
		sc.Scan()
		s := sc.Text()
		
		// 计算非空格字符的数量
		count := 0
		for j := 0; j < len(s); j++ {
			if s[j] != ' ' {
				count++
			}
		}
		
		// 直接构建结果
		result := make([]byte, count)
		idx := 0
		for j := len(s) - 1; j >= 0; j-- {
			if s[j] != ' ' {
				result[idx] = s[j]
				idx++
			}
		}
		
		writer.Write(result)
		writer.WriteByte('\n')
	}
}

发表于 2025-08-20 10:08:40 回复(0)
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)