题目:
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。
示例 1:
输入:"ab-cd"
输出:"dc-ba"
示例 2:
输入:"a-bC-dEf-ghIj"
输出:"j-Ih-gfE-dCba"
示例 3:
输入:"Test1ng-Leet=code-Q!"
输出:"Qedo1ct-eeLg=ntse-T!"
提示:
- S.length <= 100
- 33 <= S[i].ASCIIcode <= 122
- S 中不包含 \ or "
实现思路:
依次比较首尾字符,均为字母则调换位置,不符合则跳过非字母位置,继续比较
实现代码:
import org.apache.commons.lang.StringUtils;
import java.util.Arrays;
public class leetcode917 {
/**
* 输入:"Test1ng-Leet=code-Q!"
* 输出:"Qedo1ct-eeLg=ntse-T!"
*/
public static String reverseOnlyLetters(String S) {
int length =S.length();
char[] temp = S.toCharArray();
int start = 0 ;
int end = length-1;
while(start<=end){
char a = S.charAt(start);
char b = S.charAt(end);
boolean flag1= Character.isLetter(a);
boolean flag2= Character.isLetter(b);
Character.isDigit(a);
Character.isLetterOrDigit(a);
if(flag1&flag2){
temp[start++]=b;
temp[end--]=a;
}else if(!flag1 & !flag2){
start++;
end--;
}else if(!flag1 & flag2){
start++;
}else{
end--;
}
}
String result = String.valueOf(temp);
result = Arrays.toString(temp);
return result;
}
}