博客
关于我
【leetcode-字符串】翻转字符串里的单词
阅读量:540 次
发布时间:2019-03-09

本文共 982 字,大约阅读时间需要 3 分钟。

今天我遇到了一个编程问题,需要在Java中实现一个函数,能够将一个字符串中的每个单词进行翻转。这个问题看起来不算太难,但需要注意一些细节,比如处理多余的空格以及保留或去掉空格。

首先,我需要理解题目的具体要求。题目中提到,无空格字符构成一个单词,这意味着像“hello”这样的单词不会有问题。但是如果有多个空格,比如“ word another”,这会被视为“word”和“another”两个单词。反转后的字符串应该将这些单词的顺序颠倒,并且在单词之间只保留一个空格,而不是多个。

接下来,我需要考虑如何处理输入字符串中的首尾空格。例如,输入可能是“ hello world! ”,那么反转后的字符串应该是“world! hello”。因此,我需要先处理这些首尾的空格,确保在反转后不会有多余的空格出现在开头或结尾。

为了实现这一点,我想到可以使用Java中的trim()方法来去除首尾空格。然后,将字符串分割成单词数组,这可以通过split(" ")方法来实现。需要注意的是,split(" ")方法会将多个空格分割后的结果中包含空字符串,但我需要过滤掉这些空字符串,只保留实际的单词。

接下来,我需要将单词数组反转,然后将每个单词添加到一个StringBuilder对象中。这一步需要注意的是,每个单词应该被trim()处理,以去除内部可能存在的空格,并且在添加时保留一个空格。

为了确保代码的正确性,我还需要考虑一些边界情况。例如,输入字符串为空,或者只有空格的情况。在这种情况下,函数应该返回一个空字符串,而不是带有空格的字符串。

在编写代码时,我需要确保处理所有这些情况,并且代码的效率尽可能高。由于问题要求使用O(1)额外空间复杂度的原地解法,这意味着我不能使用额外的数组或数据结构来存储单词,而是需要直接在原字符串上进行操作。然而,由于Java的字符串是不可变的,这种方法可能不太适用,因此可能需要使用StringBuilder来辅助操作。

在编写代码时,我还需要注意优化性能,避免不必要的计算和操作。例如,在反转单词顺序时,尽量减少循环的次数,或者利用更高效的方法来处理字符串。

最后,我需要测试代码,确保它能够正确处理各种情况,包括多余空格、首尾空格、单词内部空格等。同时,我还需要考虑代码的可读性和可维护性,确保其他开发者能够理解和修改代码。

转载地址:http://hahiz.baihongyu.com/

你可能感兴趣的文章
python3+django使用celery执行某些任务失败的解决方案
查看>>
Python3+Requests+Unittest实战系列【一】
查看>>
python3+requests+unittest实战系列【一】
查看>>
python3+requests+unittest实战系列【二】
查看>>
Python3+Requests+Unittest实战系列【二】
查看>>
python3----ASCII
查看>>
Python3-selenium自动化测试框架,结合HTMLTestRunner测试报告!
查看>>
Python3-如何自我更新作为服务运行的应用程序
查看>>
Python3.1-网格模拟概念性问题
查看>>
Python3.12 解决conda环境libstdc++版本过低问题
查看>>
python3.2批量查询IP地址区域
查看>>
Python3.5中协程和未来/任务之间的区别?
查看>>
python3.5实现socket通讯(TCP)
查看>>
python3.6 ubuntu部署nginx、 uwsgi、 django
查看>>
Python3.6.3中,functools似乎不能用
查看>>
python3.6.5+cuda9+cudnn7.1+win10+tensorflow-gpu1.9.0下载配置
查看>>
python3.6使用pickle序列化class
查看>>
python3.6入门到高阶(全栈) day027 网络通信协议 osi七层模型
查看>>
Python3.6属性错误:模块‘;异步没有属性‘;运行‘;
查看>>
python3.6版本中的python-weka-wrapper安装失败,错误代码为%1
查看>>