美文网首页
仅仅反转字母

仅仅反转字母

作者: 那个阳光下奔跑的少年 | 来源:发表于2022-12-02 15:22 被阅读0次

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

    所有非英文字母保留在原有位置。
    所有英文字母(小写或大写)位置反转。
    返回反转后的 s 。

    示例 1:

    输入:s = "ab-cd"
    输出:"dc-ba"
    示例 2:

    输入:s = "a-bC-dEf-ghIj"
    输出:"j-Ih-gfE-dCba"
    示例 3:

    输入:s = "Test1ng-Leet=code-Q!"
    输出:"Qedo1ct-eeLg=ntse-T!"

    提示

    1 <= s.length <= 100
    s 仅由 ASCII 值在范围 [33, 122] 的字符组成
    s 不含 '"' 或 '\'

    class Solution {
        public String reverseOnlyLetters(String letter) {
            if(letter == null || letter.length() == 0) {
                return null;
            }
            char[] arr = letter.toCharArray();
            int left = 0;
            int right = arr.length -1;
            while (true) {
                while (left < right && !Character.isLetter(letter.charAt(left))) {
                    left++;
                }
                while (right > left && !Character.isLetter(letter.charAt(right))) {
                    right--;
                }
    
                if(left>=right){
                    break;
                }
                swap(left,right,arr);
                left++;
                right--;
            }
            return new String(arr);
        }
    
        public void swap(int left,int right, char[] array){
            char temp = array[left];
            array[left] = array[right];
            array[right] = temp;
        }
    }
    

    相关文章

      网友评论

          本文标题:仅仅反转字母

          本文链接:https://www.haomeiwen.com/subject/xrgefdtx.html