zoukankan      html  css  js  c++  java
  • 917. 仅仅反转字母『简单』

    题目来源于力扣(LeetCode

    一、题目

    917. 仅仅反转字母

    题目相关标签:字符串

    提示:

    • S.length <= 100
    • 33 <= S[i].ASCIIcode <= 122
    • S 中不包含 or "

    二、解题思路

    1. 定义左右指针,遍历字符串 s

    2. 左指针右移查找字母字符元素,为字母时,右指针左移查找字母字符元素

    3. 左右指针均为字母字符元素时,完成交换

    三、代码实现

    public static String reverseOnlyLetters(String S) {
        int left = 0;
        int right = S.length() - 1;
    
        char[] arr = S.toCharArray();
        while (left < right) {
            if (isLetter(arr[left])) {
                // 左侧满足条件时,判断右侧
                if (isLetter(arr[right])) {
                    // 右侧索引上字符也是字母时,交换
                    char temp = arr[left];
                    arr[left] = arr[right];
                    arr[right] = temp;
                    left ++;
                }
                // 右侧向左侧移动
                right --;
            } else {
                left ++;
            }
        }
        return String.valueOf(arr);
    }
    
    // 判断字符是否是字母(大写与小写都算)
    public static boolean isLetter(char a) {
        return (a >= 'a' && a <= 'z') || (a >= 'A' && a <= 'Z');
    }
    

    四、执行用时

    五、部分测试用例

    public static void main(String[] args) {
        String s = "ab-cd";  // output: "dc-ba"
    //    String s = "a-bC-dEf-ghIj";  // output: "j-Ih-gfE-dCba"
    //    String s = "Test1ng-Leet=code-Q!";  // output: "Qedo1ct-eeLg=ntse-T!"
    
        String result = reverseOnlyLetters(s);
        System.out.println(result);
    }
    
  • 相关阅读:
    字典
    列表
    重要的方法
    一笔"狗"销,"猪"事顺利!!!
    基础数据类型
    循环,格式化,运算符
    算法——三角形图形
    算法——字母金字塔
    算法——二进制求和
    Python power函数
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/13221471.html
Copyright © 2011-2022 走看看