![](https://i-blog.csdnimg.cn/blog_migrate/2dcde544d8f5186dd4eef50739cd3c0d.png)
给您一个字符串,如果该字符串是回文,则要求您编写一个返回true的方法,否则返回false。 回文是从前面到后面像alula
一样读取的字符串
他们有很多解决方案来检查字符串是否是回文。 我将向您展示三种解决方案。 第一个将使用StringBuilder ,第二个将使用字符数组来解决此问题。 对于第三个解决方案,我们将就地解决问题。
使用StringBuilder的解决方案
![](https://i-blog.csdnimg.cn/blog_migrate/c6ed3971bd45a756af0d1fb77de9098e.png)
在此解决方案中,我们:
- 在第3行上创建一个StringBuilder 。
- 反转StringBuilder并在第5行上创建一个新的String。
- 使用equals方法查看第6行上的两个字符串相同。
使用CharArray的解决方案
![](https://i-blog.csdnimg.cn/blog_migrate/c6ed3971bd45a756af0d1fb77de9098e.png)
在此解决方案中,我们:
- 使用toCharArray()方法在第4行上创建一个新的字符数组。
- 循环遍历第6行的数组。
- 检查第8行中两个值是否不相同。如果值不相同,则返回false。
- 在第10行返回true。
就地解决方案
![](https://i-blog.csdnimg.cn/blog_migrate/c6ed3971bd45a756af0d1fb77de9098e.png)
此解决方案与最后一个解决方案几乎相同,但是我们使用charAt方法比较字符。 此解决方案速度更快,因为它最多可在阵列上循环一次且不会使用更多的内存。
结论
在本文中,您已经看到了不同的方式来检查字符串是否是回文。 如果在技术面试中被问到这个问题,您将有一些解决方案。
最初于 2019 年1月23日 发布在 fluentjava.com 。