给你一个字符串 s ,根据下述规则反转字符串:
- 所有非英文字母保留在原有位置。
- 所有英文字母(小写或大写)位置反转。
返回反转后的 s 。
示例:
输入:s = “Test1ng-Leet=code-Q!”
输出:“Qedo1ct-eeLg=ntse-T!”
class Solution {
public String reverseOnlyLetters(String s) {
StringBuilder sb = new StringBuilder();
for(int i=0;i<s.length();i++){
if((s.charAt(i)>='a' && s.charAt(i)<='z')||s.charAt(i)>='A' && s.charAt(i)<='Z'){
sb.insert(0,s.charAt(i));
}
}
for(int i=0;i<s.length();i++){
if(!((s.charAt(i)>='a' && s.charAt(i)<='z')||(s.charAt(i)>='A' && s.charAt(i)<='Z'))){
if(i<sb.length()){
sb.insert(i,s.charAt(i));
}else{
sb.append(s.charAt(i));
}
}
}
return sb.toString();
}
}