0
点赞
收藏
分享

微信扫一扫

力扣 917. 仅仅反转字母

暮晨夜雪 2022-02-23 阅读 37
leetcode

题目来源: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 条评论