917.仅仅反转字母

94 阅读1分钟

题目:
给你一个字符串 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' 
}