题目地址:
https://leetcode.com/problems/reverse-only-letters/
给定一个长 n n n的字符串,要求将其翻转但是除了字母之外的字符保持下标不变。
代码如下:
public class Solution {
public String reverseOnlyLetters(String S) {
char[] s = S.toCharArray();
for (int i = 0, j = s.length - 1; i < j; ) {
while (i < j && !Character.isLetter(s[i])) {
i++;
}
while (i < j && !Character.isLetter(s[j])) {
j--;
}
swap(s, i, j);
i++;
j--;
}
return new String(s);
}
private void swap(char[] s, int i, int j) {
char tmp = s[i];
s[i] = s[j];
s[j] = tmp;
}
}
时空复杂度 O ( n ) O(n) O(n)。