博客
关于我
【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/

你可能感兴趣的文章
Notes on Paul Irish's "Things I learned from the jQuery source" casts
查看>>
Notification 使用详解(很全
查看>>
NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
查看>>
NotImplementedError: Could not run torchvision::nms
查看>>
nova基于ubs机制扩展scheduler-filter
查看>>
Now trying to drop the old temporary tablespace, the session hangs.
查看>>
nowcoder—Beauty of Trees
查看>>
np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?
查看>>
np.power的使用
查看>>
NPM 2FA双重认证的设置方法
查看>>
npm build报错Cannot find module ‘webpack/lib/rules/BasicEffectRulePlugin‘解决方法
查看>>
npm build报错Cannot find module ‘webpack‘解决方法
查看>>
npm ERR! ERESOLVE could not resolve报错
查看>>
npm ERR! fatal: unable to connect to github.com:
查看>>
npm ERR! Unexpected end of JSON input while parsing near '...on":"0.10.3","direc to'
查看>>
npm ERR! Unexpected end of JSON input while parsing near ‘...“:“^1.2.0“,“vue-html-‘ npm ERR! A comp
查看>>
npm error Missing script: “server“npm errornpm error Did you mean this?npm error npm run serve
查看>>
npm error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装
查看>>
npm install CERT_HAS_EXPIRED解决方法
查看>>
npm install digital envelope routines::unsupported解决方法
查看>>