首页 > 试题广场 >

字符串变形

[编程题]字符串变形
  • 热度指数:163014 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
对于一个长度为 n 字符串,我们需要对它做一些变形。

首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。

比如"Hello World"变形后就变成了"wORLD hELLO"。

数据范围: , 字符串中包括大写英文字母、小写英文字母、空格。
进阶:空间复杂度 , 时间复杂度

输入描述:
给定一个字符串s以及它的长度n(1 ≤ n ≤ 10^6)


输出描述:
请返回变形后的字符串。题目保证给定的字符串均由大小写字母和空格构成。
示例1

输入

"This is a sample",16

输出

"SAMPLE A IS tHIS"
示例2

输入

"nowcoder",8

输出

"NOWCODER"
示例3

输入

"iOS",3

输出

"Ios"
func trans(s string, n int) string {
	// 大小写
	var sb strings.Builder
	for i := 0; i < len(s); i++ {
		if 'a' <= s[i] && s[i] <= 'z' {
			sb.WriteByte(s[i] - 32)
		} else if 'A' <= s[i] && s[i] <= 'Z' {
			sb.WriteByte(s[i] + 32)
		} else {
			sb.WriteByte(s[i])
		}
	}
	// 反转
	arr := strings.Split(sb.String(), " ")
	i, j := 0, len(arr)-1
	for ; i < j; i, j = i+1, j-1 {
		arr[i], arr[j] = arr[j], arr[i]
	}
	return strings.Join(arr, " ")
}

发表于 2023-01-03 18:18:25 回复(1)
package main
import (
    "strings"
)
/**
 *
 * @param s string字符串
 * @param n int整型
 * @return string字符串
 */
func trans(s string, n intstring {
    newBs := []byte(s)
    for iv := range s {
        if v == 32 {
            continue
        } else if v >= 97 {
            newBs[i] -= 32
        } else {
            newBs[i] += 32
        }
    }
    str := string(newBs)
    strs := strings.Split(str, " ")
    for ij := 0len(strs)-1; i < j; ij = i+1, j-1 {
        strs[i], strs[j] = strs[j], strs[i]
    }
    return strings.Join(strs, " ")
}

发表于 2022-11-10 20:42:31 回复(0)
func trans( s string ,  n int ) string {
    // var res strings.Builder

    str := []byte(s)
    for i := 0; i < n; i++ {
        if str[i] >= 'A' && str[i] <= 'Z' {
            str[i] = str[i]-'A'+'a'
        } else if str[i] >= 'a' && str[i] <= 'z' {
            str[i] = str[i]-'a'+'A'
        } 
    }

    res := string(str)
    words := strings.Split(res, " ")
    ij := 0len(words)-1
    for i < j {
        words[i], words[j] = words[j], words[i]
        i++
        j--
    }
   
    res = strings.Join(words, " ")
    return res
}
发表于 2022-11-05 21:11:59 回复(0)
大佬帮看下,我这个一层循环都过不了
func trans(s string, n int) string {
	var world, newStr = "", ""
	for _, c := range s {
		if c >= rune('a') && c <= rune('z') {
			c = c - 32
			world = world + string(c)
		} else if c >= rune('A') && c <= rune('Z') {
			c = c + 32
			world = world + string(c)
		} else {
			newStr = " " + world + newStr
			world = ""
		}
	}
	newStr = world + newStr
	return newStr
}


发表于 2022-05-17 17:41:40 回复(0)
一层循环超时,要搞那样

发表于 2022-05-11 17:05:13 回复(1)

问题信息

难度:
5条回答 20195浏览

热门推荐

通过挑战的用户

查看代码
字符串变形