【蓝桥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');
    }
}

        日常练习题打卡。

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

  • 23
    点赞
  • 19
    收藏
  • 打赏
    打赏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:Age of Ai 设计师:meimeiellie 返回首页
评论 25

打赏作者

执 梗

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值