给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。
字符串回文指该字符串正序与其逆序逐字符一致。
数据范围:
要求:空间复杂度 ,时间复杂度
"absba"
true
"ranko"
false
"yamatomaya"
false
"a"
true
字符串长度不大于1000000,且仅由小写字母组成
class Solution: def judge(self , str ): # write code here if not str: return True # 库函数 new_str = str[::-1] return new_str == str
class Solution: def judge(self , str ): # write code here if not str: return True # 比对left和right是否一致 # 一致,++left, right-- # 不一致,fasle # left == right 则退出 left = 0 right = len(str)-1 while left < right and left != right: if str[left] == str[right]: left +=1 right -=1 else: return False return True
public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param str string字符串 待判断的字符串 * @return bool布尔型 */ int left=0; public boolean judge (String str) { // write code here char[] ss=str.toCharArray(); int n=ss.length; if(n<2) return true; return helper(ss,0); } public boolean helper(char[] ss,int right){ if(right==ss.length) return true; boolean flag=helper(ss,right+1); flag=flag&&(ss[left]==ss[right]); left++; return flag; } }
//也就是一行代码的事情 public boolean judge (String str) { return str.equals(new StringBuilder(str).reverse().toString()); }
#include <stdbool.h> // 必须申明,否则编译错误 bool judge(char* str ) { // write code here int left, right; left = 0; right = strlen(str)-1; for (left; left <= right; right--, left++) { if (*(str+left) == *(str+right)) continue; else break; } if (left <= right) return false; else return true; }
public boolean judge (String str) { for(int i=0;i<str.length()/2;i++){ if(str.charAt(i)!=str.charAt(str.length()-1-i)) return false; } return true; }
public boolean judge (String str) { // write code here String str2 = new StringBuffer(str).reverse().toString(); return str.equals(str2); }
//左右双指针 function judge( str ) { if(str.length === 0) return true; let left = 0; let right = str.length - 1; while(left < right){ if(str[left] !== str[right]){ return false; } left++; right--; } return true; }
//for循环法 function judge( str ) { for(let i = 0; i < Math.floor(str.length / 2); i++){ if(str[i] !== str[str.length-i-1]) return false; } return true; }
public boolean judge (String str) { // write code here for(int i=0;i<str.length()/2;i++){ if(str.charAt(i)!=str.charAt(str.length()-1-i)){ return false; } } return str!=null; }