【LeetCode力扣】仅仅反转字母,给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转

学习目标:

目标:熟练运用 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

猜你喜欢

转载自blog.csdn.net/zhangxxin/article/details/112996057