复制
收藏
提问
全网
判断一个字符串是否是回文。要求:包括输入或赋值语句在内,不得超过两条语句,且不得使用条件判断语句。 如:s="live on no evil",输出Ture;s="上海自来水来自海上",输出True; s="This is an example",输出False。
1个月前
理解问题判断一个字符串是否是回文。要求:包括输入或赋值语句在内,不得超过两条语句,且不得使用条件判断语句。 如:s="live on no evil",输出Ture;s="上海自来水来自海上",输出True; s="This is an example",输出False。
已完成理解「判断一个字符串是否是回文。要求:包括输入或赋值语句在内,不得超过两条语句,且不得使用条件判断语句。 如:s="live on no evil",输出Ture;s="上海自来水来自海上",输出True; s="This is an example",输出False。」
展开阅读网页
更专业一些
转笔记
专业
判断一个字符串是否是回文。要求:包括输入或赋值语句在内,不得超过两条语句,且不得使用条件判断语句。 如:s="live on no evil",输出Ture;s="上海自来水来自海上",输出True; s="This is an example",输出False。不在提醒
判断字符串是否为回文
要点总结描述1:使用双指针法进行判断。2 要点总结描述2:遍历字符串,比较首尾字符。5 要点总结描述3:不使用条件判断语句。9
方法一:双指针法
- 定义:双指针法是将两个指针分别指向字符串的首尾,逐步向中间移动,比较对应位置的字符是否相等。
- 实现:
char *s, *p, *q; p = s; q = s + strlen(s) - 1; while(p < q) if(*p++ != *q--) return 0; return 1;
- 优点:简单直观,时间复杂度为O(n)。3
方法二:逐字符比较
- 定义:从字符串两端开始向中间遍历,逐个字符进行比较。
- 实现:
int i = 0, j = strlen(s) - 1; while(i < j) if(s[i++] != s[j--]) return 0; return 1;
- 优点:直观易懂,易于实现。5
方法三:使用递归
- 定义:递归方法通过将问题分解为更小的子问题来解决。
- 实现:
int is_palindrome(char *s, int i, int j) { if(i >= j) return 1; if(s[i] != s[j]) return 0; return is_palindrome(s, i + 1, j - 1); }
- 优点:代码简洁,易于理解。10