如果一个字符串正着读和反着读都一样,那它就是回文串。编写一个函数,参数为一个字符串,使用for循环,返回这个字符串是否为回文串。然后调用这个函数,呈现一个例子。
时间: 2025-04-05 15:10:55 浏览: 24
### 编写检查字符串是否为回文的函数
要编写一个使用 `for` 循环来判断字符串是否为回文的函数,可以按照以下方法实现。该函数会逐一比较字符串首尾字符是否相等,并逐步向中心移动。
以下是具体实现:
```python
def is_palindrome(s):
s = ''.join(filter(str.isalnum, s)).lower() # 去除非字母数字并转换为小写[^1]
n = len(s)
for i in range(n // 2): # 遍历到中间位置即可
if s[i] != s[n - 1 - i]: # 如果两端字符不匹配,则不是回文
return False
return True # 若循环结束未发现不同,则是回文
```
上述代码中,首先对输入字符串进行了预处理,移除了所有非字母数字字符并将所有字符转为小写形式以便于统一比较[^1]。接着利用 `for` 循环逐一遍历前半部分与对应后半部分的字符进行对比。
#### 调用示例
下面是一个简单的调用示例,用于验证函数的功能:
```python
test_strings = ["A man, a plan, a canal: Panama", "racecar", "hello"]
for test_string in test_strings:
result = is_palindrome(test_string)
print(f"'{test_string}' -> {result}")
```
运行以上代码将会输出如下结果:
```
'A man, a plan, a canal: Panama' -> True
'racecar' -> True
'hello' -> False
```
这表明第一个测试字符串经过清理后成为标准回文串;第二个本身即为简单回文;而第三个则显然不符合回文条件。
### 函数逻辑解析
- **数据清洗**:通过 `''.join(filter(str.isalnum, s))` 将原始字符串中的特殊字符去除,并将其全部转化为小写字母以消除大小写的干扰[^1]。
- **双端比较**:采用索引访问的方式分别从头和尾部取字符进行配对检验,一旦发现有任意一对字符不符立即返回 `False` 表明当前字符串并非回文结构[^1]。
- **效率考量**:由于只需要遍历至长度的一半处便能完成整个判定过程,因此时间复杂度保持在 O(n/2),简化为线性级别 O(n)[^1]。
阅读全文
相关推荐














