学习目标:
目标:熟练运用 Java所学知识
题目内容:
本文内容: 使用Java实现:仅仅反转字母
题目描述:
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转
示例 1:
输入:“ab-cd”
输出:“dc-ba”
示例 2:
输入:“a-bC-dEf-ghIj”
输出:“j-Ih-gfE-dCba”
示例 3:
输入:“Test1ng-Leet=code-Q!”
输出:“Qedo1ct-eeLg=ntse-T!”
解题思路:
改题目只用交换字母,所以不能单穿使用交换顺序来实现,但是我们只需要加两个简单的条件就可以了
实现代码:
public class Practice_03 {
public static void main(String[] args) {
//给定一个字符串 S ,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转
String str = "zh-sd)s";
System.out.println(reverseOnlyLetters(str));
}
public static String reverseOnlyLetters(String S) {
char[] arr=S.toCharArray();
int i=0;//顺序遍历下标
int j=S.length()-1;//逆序遍历下标
while(i<j){
while(i<j&&!isLetter(arr[i]))i++;//当i<j并且元素不是字母
while(i<j&&!isLetter(arr[j])) j--;
char temp;
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
i++;
j--;
}
return new String(arr);
}
}
运行结果:
sd-sh)z