仅仅反转字母-LeetCode(Java实现)

题目描述:
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。
示例 1:

输入:"ab-cd" 输出:"dc-ba"

【仅仅反转字母-LeetCode(Java实现)】示例 2:
输入:"a-bC-dEf-ghIj" 输出:"j-Ih-gfE-dCba"

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

解题思路:
  1. 先找出所有字母字符,组成一个字母字符串
  2. 反转字母字符串
  3. 从前往后依次用字符字符串中的字符替换原字符串中的字母。
代码实现:
class Solution { public String reverseOnlyLetters(String S) { if (S == null) { return S; } //取得所有为字母的字符,组成一个字母字符串 StringBuffer str = new StringBuffer(""); for (int i = 0; i < S.length(); i++) { char val = S.charAt(i); if ((val >= 'a' && val <= 'z') || (val >= 'A' && val <= 'Z')) { str.append(val); } } //反转字母字符串 str.reverse(); StringBuffer s1 = new StringBuffer(S); //用反转后的字母字符串中的字符替换原字符串中的字母 int k = 0; for (int i = 0; i < s1.length(); i++) { char val = s1.charAt(i); if ((val >= 'a' && val <= 'z') || (val >= 'A' && val <= 'Z')) { String valuehttps://www.it610.com/article/= "" + str.charAt(k); s1.replace(i,i+1,value); k++; } } return s1.toString(); } }


    推荐阅读