题目:
给你一个字符串 s ,根据下述规则反转字符串:
- 所有非英文字母保留在原有位置。
- 所有英文字母(小写或大写)位置反转。
返回反转后的 s 。
算法:
func reverseOnlyLetters(s string) string {
slice := []byte(s)
start, end := 0, len(slice) - 1
for start <= end {
if !isChar(slice[start]) {
start ++
continue
}
if !isChar(slice[end]) {
end --
continue
}
slice[start], slice[end] = slice[end], slice[start]
start ++
end --
}
return string(slice)
}
func isChar(byt byte) bool {
return 'a' <= byt && byt <= 'z' || 'A' <= byt && byt <= 'Z'
}