力扣 917. 仅仅反转字母

阅读 60

2022-02-23

题目来源:https://leetcode-cn.com/problems/reverse-only-letters/

大致题意:
给一个字符串,其中有字母和其他字符,在保证其他字符位置不变的情况下,将所有字母所在位置翻转

思路

  1. 遍历字符串,取出所有字母
  2. 翻转取出的字母,形成新字符串
  3. 便利原字符串,找到其他字符所在位置,将对应的字符插入到新字符串的对应位置中

代码:

public String reverseOnlyLetters(String s) {
        StringBuffer sb = new StringBuffer();
        int n = s.length();
        // 取出字母
        for (int i = 0; i < n; i++) {
            char c = s.charAt(i);
            if (Character.isLetter(c)) {
                sb.append(c);
            }
        }
        // 翻转
        sb.reverse();
        // 插入其他字符
        for (int i = 0; i < n; i++) {
            char c = s.charAt(i);
            if (!Character.isLetter(c)) {
                sb.insert(i, c);
            }
        }
        return sb.toString();
    }

精彩评论(0)

0 0 举报