回文字符串

本文介绍了如何使用Java来处理回文字符串问题,包括判断一个字符串是否为回文、反转字符串、在允许删除一个字符的情况下判断能否形成回文以及找到最长的回文子串。文章详细解析了双指针和贪心算法的应用,并提供了具体的解题思路和代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 判断是否为回文字符串*

描述
给定一个长度为n的字符串(仅由小写字母组成),请编写一个函数,判断该字符串是否回文。如果是回文请返回true,否则返回false。
字符串回文指该字符串正序与其逆序逐字符一致。
数据范围: 0 < n < 1000000 0 < n < 1000000 0<n<1000000
要求:空间复杂度 O ( 1 ) O(1) O(1),时间复杂度 O ( n ) O(n) O(n)

知识点:字符串,双指针

示例1

输入:"absba"
返回值:true

示例2

输入:"ranko"
返回值:false

示例3

输入:"yamatomaya"
返回值:false

示例4

输入:"a"
返回值:true

思路: 回文字符即首尾相互往中靠,字符都是相等的。
解法思路:
第一种:利用StringBuilder的reverse();
第二种:采用双指针的方法。

解法一

思路:利用StringBuilder的reverse(),判断两个字符是否相等。

public boolean judge (String str) {
   
	return new StringBuilder(str).reverse().toString().equals(str);
}

解法二

思路:双指针,一个正向遍历,一个逆向遍历,判断是否相同。
具体做法:
step1:准备两个指针,一个在字符串首,一个在字符串尾;
step2:在首的指针往后走,在尾的指针往前走,依次比较路过的两个字符是否相等,若不相等,直接返回false;
step3:直到两个指针在中间相遇,都还一致,就是回文,返回true。

public boolean judge (String str) {
   
	int left = 0;
    int right = str.length() - 1;
    while (left < right) {
   
    	if (str
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值