【蓝桥Java每日一题】——13.仅仅反转字母

⭐️引言⭐️

                大家好啊,我是执梗。最近刚开学,天天都是满课,把孩子都上懵逼了,说好假期万粉结果现在也还差一点达到目标。只能趁水课更新一下今天的每日一题,简单题嘿嘿嘿😂

⭐️精彩回放⭐️

2022.2.18——Java每日一练【蓝桥Java每日一题】——12.可获得的最大点数
2022.2.2——Java每日一练【蓝桥Java每日一题】——11.做菜顺序(贪心秒杀困难题)
2022.1.25——Java每日一练【蓝桥Java每日一题】——10.长度最小的子数组
2022.1.18——Java每日一练【蓝桥Java每日一练】——9.回文链表
2022.1.16——Java每日一练【蓝桥Java每日一练】——8.计算力扣银行的钱

🍋1.仅仅反转字母

给你一个字符串 s ,根据下述规则反转字符串:

  • 所有非英文字母保留在原有位置。
  • 所有英文字母(小写或大写)位置反转。

返回反转后的s。

题目链接:仅仅反转字母

         从题目的要求来看,是一道很基础的双指针问题,但细节把握不好还是容易error。就是先需要左右指针分别找到一个最左的字符和最右的字符进行交换。然后继续向内移动继续重复操作,直到左右指针相遇则完成任务。看上去如此简单(确实也简单哈哈哈),但还是有一点易错的地方。

        在左指针往左移动寻找字符的过程中和右指针向左移动的过程中,一定要保证l<r。不然如果给定字符串没有字母,左右指针都可能无止境的移动造成数组越界。

        依据上意给出代码

class Solution {
    public String reverseOnlyLetters(String s) {
        char[] arr=s.toCharArray();
        int n=arr.length;
        int l=0;
        int r=n-1;
        while(l<r){
            while(l<r&&!check(arr[l])) l++;
            while(r>l&&!check(arr[r])) r--;
                char a=arr[l];
                arr[l++]=arr[r];
                arr[r--]=a;
        }
        return new String(arr);
    }
    boolean check(char a){
        return ('a'<=a&&a<='z')||('A'<=a&&a<='Z');
    }
}

        日常练习题打卡。

        看完如果让你有一丝收获,球球感谢给一个三连支持!!!

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执 梗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值