这是悦乐书的第259次更新,第272篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第126题(顺位题号是557)。给定一个字符串,您需要反转句子中每个单词中的字符顺序,同时仍保留空格和初始单词顺序。例如:

输入:“Let's take LeetCode contest”

输出:“s'teL ekat edoCteeL tsetnoc”

注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

将s按照空格拆分为字符串数组,然后对数组中的每一个元素做翻转,再以空格拼接,作为结果返回。

public String reverseWords(String s) {
String[] arr = s.split(" ");
StringBuilder result = new StringBuilder();
for (int i=0; i<arr.length; i++) {
String ss = arr[i];
StringBuilder sb = new StringBuilder(ss);
sb.reverse();
arr[i] = sb.toString();
if (i == arr.length-1) {
result.append(arr[i]);
} else {
result.append(arr[i]+" ");
}
}
return result.toString();
}

03 第二种解法

对于第一种解法我们还可以再优化下。

public String reverseWords2(String s) {
String[] arr = s.split(" ");
StringBuilder result = new StringBuilder();
for (String ss : arr) {
result.append(new StringBuilder(ss).reverse().toString()+" ");
}
return result.toString().trim();
}

04 第三种解法

我们也可以直接在字符串内部进行操作。将以空格分割开的单个单词为一个对象,对其中的字符进行互换。先将s转为字符数组,如果当前字符不为空格,索引就继续向后移动,直到遇到空格为止,此时我们获取了第一个单词组成的字符的起始索引,再使用一次循环,将其字符进行反转,然后将索引还原。最后将字符数组转为字符串返回即可。

public String reverseWords3(String s) {
char[] arr = s.toCharArray();
for (int i=0; i<arr.length; i++) {
if (arr[i] != ' ') {
int j = i;
while (i<arr.length && arr[i] != ' ') {
i++;
}
i--;
int index = i;
while (j < i) {
char temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
j++;
i--;
}
i = index;
}
}
return new String(arr);
}

05 小结

算法专题目前已日更超过三个月,算法题文章126+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

LeetCode算法题-Reverse Words in a String III(Java实现)的更多相关文章

  1. LeetCode算法题-Reverse Vowels of a String(Java实现-四种解法)

    这是悦乐书的第206次更新,第218篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第74题(顺位题号是345).编写一个函数,它将一个字符串作为输入,并仅反转一个字符串的 ...

  2. 【leetcode】557. Reverse Words in a String III

    Algorithm [leetcode]557. Reverse Words in a String III https://leetcode.com/problems/reverse-words-i ...

  3. LeetCode算法题-Reverse String II(Java实现)

    这是悦乐书的第256次更新,第269篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第123题(顺位题号是541).给定一个字符串和一个整数k,你需要反转从字符串开头算起的 ...

  4. LeetCode算法题-Reverse String(Java实现)

    这是悦乐书的第205次更新,第217篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第73题(顺位题号是344).编写一个以字符串作为输入并返回字符串的函数.例如: 输入: ...

  5. LeetCode算法题-Reverse Bits(Java实现)

    这是悦乐书的第185次更新,第187篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第44题(顺位题号是190).给定32位无符号整数,求它的反转位.例如: 输入:4326 ...

  6. 【算法】LeetCode算法题-Reverse Integer

    这是悦乐书的第143次更新,第145篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第2题(顺位题号是7),给定32位有符号整数,然后将其反转输出.例如: 输入: 123 ...

  7. LeetCode算法题-Reverse Linked List(Java实现)

    这是悦乐书的第192次更新,第195篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第51题(顺位题号是206).反转单链表.例如: 输入:1-> 2-> 3- ...

  8. LeetCode算法题-Binary Number with Alternating Bits(Java实现)

    这是悦乐书的第292次更新,第310篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第160题(顺位题号是693).给定正整数,检查它是否具有交替位:即它的二进制数的任意两 ...

  9. LeetCode算法题-Convert BST to Greater Tree(Java实现)

    这是悦乐书的第255次更新,第268篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第122题(顺位题号是538).给定二进制搜索树(BST),将其转换为更大树,使原始BS ...

随机推荐

  1. Centos 7 .Net core后台守护进程Supervisor配置

    环境: Centos 7 已安装.Net core 2.0.0  .Net core 1.1.2 1.Supervisor安装 yum 安装 yum install supervisor (阿里云验证 ...

  2. Filebeat 模块与配置

    续 • <开始使用Filebeat> 1.  关于Filebeat 当你要面对成百上千.甚至成千上万的服务器.虚拟机和容器生成的日志时,请告别 SSH 吧!Filebeat 将为你提供一种 ...

  3. Error: Default interface methods are only supported starting with Android N (--min-api 24): java.io.InputStream org.apache.poi.sl.usermodel.ObjectShape.readObjectData()

    项目运行的时候,如果报错 Error: Default interface methods are only supported starting with Android N (--min-api ...

  4. 拥抱单页网站! jQuery全屏滚动插件fullPage.js

    不知道从什么时候开始,单页网站就悄悄走进人们的视线,尤其是国外的网站,更是钟爱单页网站.制作一个全屏滚动的效果,然后每个滚动页弄一个好看的背景色,配上一些描述性的文字,大家都喜欢这么弄,仿佛逼格瞬间可 ...

  5. VSCode入门----设置成中文

    将VScode设置成中文. 1.如下图,安装中文插件,点击左边后,输入chinese搜索,然后选择中文件简体进行安装. 2.按住Ctrl+Shift+P,然后输入 configure ,如下图,选择“ ...

  6. Chapter 5 Blood Type——17

    "I'll be coming around with a dropper of water to prepare your cards, so please don't start unt ...

  7. 用Scrutor来简化ASP.NET Core的DI注册

    目录 背景 Scrutor简介 Scrutor的简单使用 注册接口的实现类 注册类自身 重复注册处理策略 总结 相关文章 背景 在我们编写ASP.NET Core代码的时候,总是离不开依赖注入这东西. ...

  8. Python面向对象:杂七杂八的知识点

    为什么有这篇"杂项"文章 实在是因为python中对象方面的内容太多.太乱.太杂,在写相关文章时比我所学过的几种语言都更让人"糟心",很多内容似独立内容.又似相 ...

  9. Java的几道面试题目以及简短回答做个记录保存

      最近没有继续用CSDN写博客了,转到博客园,什么时候自己搭建一个博客就好了. 一 谈谈你对Spring的工作原理的理解 引用一篇博客的讲解,https://www.cnblogs.com/xdp- ...

  10. IOS自带输入法中文不触发KEYUP事件导致vue双向绑定错误问题

    先上图: 可以看到输入框中的内容和弹出框的内容不一致, <input class="am-fr labRight" id="txcode" type=&q ...