NC141 判断回文

NC141 判断回文_入门

描述

给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。

字符串回文指该字符串正序与其逆序逐字符一致。

数据范围:$0<n \leq 1000000$

要求:空间复杂度 $O(1)$,时间复杂度 $O(n)$

示例1

输入:”absba”
返回值:true

示例2

输入:”ranko”
返回值:false

示例3

输入:”yamatomaya”
返回值:false

示例4

输入:”a”
返回值:true

备注:

字符串长度不大于1000000,且仅由小写字母组成

关联企业

腾讯
阿里巴巴
字节跳动

关联职位

算法
研发
测试
前端

我的解析

翻转还相等,则是回文

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.*;

public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param str string字符串 待判断的字符串
* @return bool布尔型
*/
public boolean judge (String str) {
// write code here
// 如果翻转字符串之后,还是和原来的字符串相等,则是回文数
return str.equals(new StringBuilder(str).reverse().toString());
}
}

遍历判断是否对称:使用单指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.*;

public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param str string字符串 待判断的字符串
* @return bool布尔型
*/
public boolean judge (String str) {
// write code here
for(int i=0,length=str.length();i<=length/2;i++){
if(str.charAt(i)!=str.charAt(length-1-i)){
return false;
}
}
return true;
}
}

遍历判断是否对称:使用双指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.*;

public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param str string字符串 待判断的字符串
* @return bool布尔型
*/
public boolean judge (String str) {
// write code here
for(int i=0,j=str.length()-1;i<=j;i++,j--){
if(str.charAt(i)!=str.charAt(j)){
return false;
}
}
return true;
}
}