每天一道leetcode-557反转字符串中的单词 III

  • 2019 年 10 月 4 日
  • 筆記

前言

每天的题目见github(看最新的日期): https://github.com/gzc426

昨天的题解

题目

每天一道leetcode-557反转字符串中的单词 III 分类:字符串

题目详述

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例 1:

输入: "Let's take LeetCode contest" 输出: "s'teL ekat edoCteeL tsetnoc" 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

题目详解

思路

  • 首先按照空格分割字符串,然后对于每一个字符串进行字符串反转;
  • 再把反转后的字符串拼接起来。

代码

class Solution {      public String reverseWords(String s) {          String [] list = s.split(" ");//按照空格分割字符串         //String result = "";//String 比StringBuffer 效率低!          StringBuffer result = new StringBuffer();//这里建议用StringBuffer,          for(int i=0;i<list.length - 1;i++)          {//对于分割后的每一个字符串进行反转,反转以后再加到里面              result.append(reverse(list[i]) + " ");          }          result.append(reverse(list[list.length - 1]));//最后一个末尾没有空格分开处理          return result.toString();      }      public String reverse(String s)      {//反转字符串          char [] charArray = s.toCharArray();//转字符数组          int i =0;int j = charArray.length - 1;          while(i < j)          {              char ch = charArray[i];              charArray[i] = charArray[j];              charArray[j] = ch;//交换前后两个字符              i++;              j--;//移动到下一对需要交换的字符上          }          return String.valueOf(charArray);//字符数组转字符串      }  }

代码截图(为了避免代码排版错乱