每天一道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);//字符数组转字符串 } }
代码截图(为了避免代码排版错乱)
