对于一个长度为 n 字符串,我们需要对它做一些变形。
首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。
比如"Hello World"变形后就变成了"wORLD hELLO"。
数据范围:
, 字符串中包括大写英文字母、小写英文字母、空格。
进阶:空间复杂度
, 时间复杂度
给定一个字符串s以及它的长度n(1 ≤ n ≤ 10^6)
请返回变形后的字符串。题目保证给定的字符串均由大小写字母和空格构成。
"This is a sample",16
"SAMPLE A IS tHIS"
"nowcoder",8
"NOWCODER"
"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, " ") }
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 }