判断是否是回文字符串

判断一个字符串是否是回文字符串 就类似 ‘ababa‘ 这样的字符串,正读和反读都一样

int main()
{
	char a[101], s[101];
	int i, len, mid, next, top;
	gets(a);
	len = strlen(a);    //求字符串a的长度
	mid = len / 2 - 1;   //求出字符串的中点
	top = 0;  //将栈清空
	for (i = 0; i <= mid; i++)
		s[++top] = a[i];     //将mid之前的字符串都压入栈中

	//判断字符串的长度是奇数还是偶数,并找出需要进行字符匹配的下标的起始位置
	if (len % 2 == 0)   
		next = mid + 1;
	else
		next = mid + 2;
	//开始匹配
	for (i = next; i <= len - 1; i++){
		if (a[i] != s[top])
			break;
		top--;
	}
	//top = 0 就是回文字符串,打印“yes”
	if (top == 0)
		printf("yes");
	//否则,打印“no”
	else
		printf("no");

	system("pause");
	return 0;
}

 

### 如何使用 Python 编写判断回文字符串的函数 在 Python 中,可以通过多种方式来实现判断一个字符串是否为回文的功能。以下是几种常见的方法: #### 方法一:双指针法 通过设置两个指针分别指向字符串的开头和结尾,逐步向中间移动并比较对应位置上的字符是否相同。 ```python def is_palindrome_two_pointers(s: str) -> bool: left, right = 0, len(s) - 1 while left < right: if s[left] != s[right]: return False left += 1 right -= 1 return True ``` 这种方法的时间复杂度为 O(n),其中 n 是字符串的长度[^1]。 --- #### 方法二:切片反转法 利用 Python 的切片功能快速获取字符串的逆序形式,并将其与原字符串进行比较。 ```python def is_palindrome_slice(s: str) -> bool: return s == s[::-1] ``` 此方法简洁高效,同样具有 O(n) 的时间复杂度[^2]。 --- #### 方法三:列表反转法 将字符串转换成列表后调用 `reversed()` 函数对其进行反转操作,再重新组合并与原始字符串对比。 ```python def is_palindrome_reversed_list(s: str) -> bool: reversed_s = ''.join(reversed(list(s))) return s == reversed_s ``` 尽管这种做法稍显冗余,但它展示了如何灵活运用内置工具完成任务[^3]。 --- #### 方法四:递归算法 采用递归来逐层剥离两端字符直至剩余部分不足以构成新的子串为止。 ```python def is_palindrome_recursive(s: str) -> bool: if len(s) <= 1: return True elif s[0] != s[-1]: return False else: return is_palindrome_recursive(s[1:-1]) ``` 要注意的是,在处理较长字符串时可能会因为栈溢出而失败[^4]。 综上所述,以上四种方案均可有效解决判断回文字符串的问题,具体选择取决于实际求和个人偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值