题目链接:https://leetcode-cn.com/problems/reverse-only-letters/

前言:java初学者,边做题边学习,期望与大家共同进步。

一. 函数学习

1.首先的思路是String类型转char数组,用到了toCharArray()函数。而最后将char数组转换回String字符串时,则直接返回了new String(c)。这里还有另一个方法就是返回String.valueOf(c)。

2.判断字母时使用了Character.isLetter(s.charAt(left)),其中left为int类型。

二. 题解思路

题解用了双指针,外层while循环永真。里层第一个while循环仅在左指针指向字母时跳出,第二个while循环仅在右指针指向字母时跳出。接下来判断是否到达终止条件left >= right,如果没到达则调用自己写的swap函数交换左右指针位置上对应的数组元素。交换后两个指针各向前推一步(即左指针向左右指针向右)。

三. 心得

做题时没想到双指针,使用了额外的char数组记录字母,并遍历了两次数组,无疑浪费了很多空间。

posted on 2022-02-23 14:14  SelmaS  阅读(29)  评论(0编辑  收藏  举报