本文主要是介绍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 --);}}
}
运行结果
这篇关于Leetcode面试经典150题-151.反转字符串中的单词的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!