func reverseOnlyLetters(s string) string {
ans := []byte(s)
left, right := 0, len(s)-1
for {
// 判断左边是否扫描到字母,
// 因为'-'的ascii码值为45所以不论是 字母小写范围 97-122
// 或者大写范围65-90都大于它
// unicode.IsLetter函数返回一个字符是否是字母的bool值
for left < right && !unicode.IsLetter(rune(s[left])) {
left++
}
for right > left && !unicode.IsLetter(rune(s[right])) { // 判断右边是否扫描到字母
right--
}
//循环结束条件
if left >= right {
break
}
ans[left], ans[right] = ans[right], ans[left]
left++
right--
}
return string(ans)
}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/reverse-only-letters/solution/jin-jin-fan-zhuan-zi-mu-by-leetcode-solu-db20/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。