专栏首页赵俊的Java专栏LeetCode 917 Reverse Only Letters

LeetCode 917 Reverse Only Letters

题意

反转字符串,但只反转字符串中的字母,即 a-zA-Z。其他的字符保持原位。

Example 1:

Input: "ab-cd"
Output: "dc-ba"

Example 2:

Input: "a-bC-dEf-ghIj"
Output: "j-Ih-gfE-dCba"

Example 3:

Input: "Test1ng-Leet=code-Q!"
Output: "Qedo1ct-eeLg=ntse-T!"

解法

将字符串转为字符数组,用两个指针,从两端向中间走, 依次找下一个字母进行交换,直到两个指针相碰撞。

class Solution {
    public String reverseOnlyLetters(String S) {
        char[] chars = S.toCharArray();
        int i = 0, j = chars.length - 1;
        while (i < j) {
            while (i < j && !isLetter(chars[i])) {
                i++;
            }
            while (i < j && !isLetter(chars[j])) {
                j--;
            }
            if (i < j) {
                char temp = chars[i];
                chars[i] = chars[j];
                chars[j] = temp;
                i++;
                j--;
            }
        }
        return new String(chars);
    }

    private boolean isLetter(char c) {
        return (c >= 65 && c <= 90) || (c >= 97 && c <= 122);
    }
}

Runtime: 5 ms, faster than 93.93% of Java online submissions for Reverse Only Letters.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LeetCode 344 Reverse String

    一份执着✘
  • LeetCode 709 To Lower Case

    根据 ASCII 码判断并返回即可,大写 A - Z 为 065 - 090,小写 a - z 为 097 - 122,正好相隔 32,当为大写时,将 ASCI...

    一份执着✘
  • LeetCode 557 Reverse Words in a String III

    首先按照空格对字符串进行分隔,然后将每个单词进行翻转后再拼接回字符串即可,需要注意拼接时记得加空格,但最后一个单词不需要加。

    一份执着✘
  • Xdebug 攻击面在 PhpStorm 上的现实利用

    在调试 Drupal 远程命令执行漏洞(CVE-2018-7600 && CVE-2018-7602)时,存在一个超大的数组 $form 。在该数组中寻找到注入...

    Seebug漏洞平台
  • LeetCode 344 Reverse String

    一份执着✘
  • LintCode-49. 字符大小写排序

    悠扬前奏
  • 第一个只出现一次的字符

    用户6055494
  • 自定义 Discuz 样式

    discuz根目录——》template——》default——》forum——》discuz.htm

    阳光岛主
  • 利用DropBox自动备份服务器文件

    最开始选择存储对象的时候选了挺久的,因为要选可以和linux进行数据同步的存储空间,最好还是命令行版的,备选的有multcloud,七牛云,百度云,DropBo...

    huginn 中文网
  • 一文学习基于蒙特卡罗的强化学习方法

    用户1737318

扫码关注云+社区

领取腾讯云代金券