给你一个字符串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不含'\"''\\'

Python:

class Solution:
    def reverseOnlyLetters(self, S: str) -> str:
        alist = list(S)
        i = 0
        j = len(S)-1
        while i < j:
            if alist[i].isalpha() and alist[j].isalpha():
                alist[i], alist[j] = alist[j], alist[i]
                i += 1
                j -= 1
            else:
                if not alist[i].isalpha():
                    i += 1
                if not alist[j].isalpha():
                    j -= 1
        return ''.join(alist)

Java:

class Solution {
    public String reverseOnlyLetters(String s) {
        char[] arr = s.toCharArray();
        int i = 0;
        int j = arr.length-1;
        while(i < j)
        {
            if(!Character.isLetter(arr[i]))
            {
                i++;
                continue;
            }
            if(!Character.isLetter(arr[j]))
            {
                j--;
                continue;
            }
            char a = arr[i];
            arr[i] = arr[j];
            arr[j] = a;
            i++;
            j--;
        }
        return String.valueOf(arr);
    }
}
最后修改日期: 2022年2月24日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。