给定一个长度为 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) {
if (str == null || str.isEmpty()) return false;
char[] arr = str.toCharArray();
int left = 0;
int right = arr.length - 1;
while (left < right) {
if (arr[left] != arr[right]) {
return false;
}
left++;
right--;
}
return true;
} pub fn judge(&self, str: String) -> bool {
let a = str.as_bytes();
let mut left = 0;
let mut right = a.len() - 1;
while left < right {
if a[left] != a[right] {
return false;
}
left += 1;
right -= 1;
}
true
}