917.仅仅反转字符串

2022-08-06  本文已影响0人  spark打酱油

1.题目

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

2.思路

使用双指针

3.代码

object Solution {

def reverseOnlyLetters(s: String): String = {

    val charArray: Array[Char] = s.toCharArray

    var left = 0

    var right =charArray.length-1

    while (left<right){

      if(charArray(left)>='a'&& charArray(left)<='z'||charArray(left)>='A'&& charArray(left)<='Z'){

        if(charArray(right)>='a'&& charArray(right)<='z'||charArray(right)>='A'&& charArray(right)<='Z'){

          var temp = charArray(left)

          charArray(left)=charArray(right)

          charArray(right)=temp

          left = left + 1

          right = right - 1

        } else right = right - 1

      } else  left = left + 1

    }

  String.valueOf(charArray)

  }

}

上一篇下一篇

猜你喜欢

热点阅读