设计一个算法,判定一个字符串是否是对称字符串,若是,返回1,反之返回0。例如“abcba”和“abba”均为对称字符串。
时间: 2024-11-20 08:41:24 浏览: 7
最大对称字符串的算法
5星 · 资源好评率100%
设计一个判断字符串对称性的简单算法可以分为以下几个步骤:
1. 定义函数 `is_palindrome(s: str) -> int`,接收一个字符串 `s` 作为输入。
2. 将字符串转换成小写并去除空格,因为我们要忽略大小写和空格的影响。
```python
s = s.lower().replace(" ", "")
```
3. 初始化两个指针,一个从字符串的开始向后移动 (`left = 0`),另一个从结束向前移动 (`right = len(s) - 1`)。
4. 循环遍历直到 `left` 不小于 `right`:
```python
while left < right:
```
5. 比较当前指针指向的字符:
- 如果左右指针指向的字符不相等,则 `s` 不是对称的,返回 0。
```python
if s[left] != s[right]:
return 0
```
6. 否则,继续移动指针:
- 左指针 `left` 加一,
- 右指针 `right` 减一。
7. 当左指针大于等于右指针时,说明已经检查过所有字符对,`s` 是对称的,返回 1。
```python
left += 1
right -= 1
```
完整代码如下:
```python
def is_palindrome(s: str) -> int:
s = s.lower().replace(" ", "")
left, right = 0, len(s) - 1
while left < right:
if s[left] != s[right]:
return 0
left += 1
right -= 1
return 1
# 测试示例
print(is_palindrome("abcba")) # 输出: 1
print(is_palindrome("abba")) # 输出: 1
```
阅读全文