给你一个字符串 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();
}
}
这是一个关于字符串处理的算法问题,要求反转输入字符串中的所有英文字母,而保持非字母字符的位置不变。提供的Java代码实现通过两个循环分别处理字母和非字母字符,实现了这一功能。
338

被折叠的 条评论
为什么被折叠?



