您的位置:首页 > 娱乐 > 八卦 > Leetcode面试经典150题-151.反转字符串中的单词

Leetcode面试经典150题-151.反转字符串中的单词

2024/10/6 10:35:54 来源:https://blog.csdn.net/Chang_Yafei/article/details/141758426  浏览:    关键词:Leetcode面试经典150题-151.反转字符串中的单词

class Solution {public String reverseWords(String s) {/**先trim一下去掉前后的空格*/String str = s.trim();/**转成字符数组 */char[] sArr = str.toCharArray();/**先整体倒置*/int l = 0;int r = sArr.length - 1;reverse(sArr, l, r);/**然后每个单词中逆序 */int left = 0;int right = 0;StringBuilder sb = new StringBuilder();while(right < sArr.length) {/**出这个循环的时候right位置是空格,它的前一个位置是当前字符串结尾 */while(right < sArr.length && sArr[right] != ' ') {right ++;}/**当前单词内部反转 */reverse(sArr, left, right - 1 );/**加上当前字符 */sb.append(sArr, left, right-left);/**如果还没到结尾也就是还有下个单词(我们刚开始把开头结尾的空格都通过trim去掉了),就加个空格和下个衣服分割*/if(right != sArr.length) {sb.append(" ");}/**找下一个单词的起点 */left = right;while(left < sArr.length && sArr[left] == ' ') {left ++;}/**出这个循环的时候left又是一个字符的起点位置 */right = left;}return sb.toString();}public void swap(char[] sArr, int i, int j) {char temp = sArr[i];sArr[i] = sArr[j];sArr[j] = temp; }public void reverse(char[] sArr, int start, int end) {while(start < end) {swap(sArr, start ++, end --);}}
}

运行结果

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com