博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断一个字符串是否回文
阅读量:4217 次
发布时间:2019-05-26

本文共 981 字,大约阅读时间需要 3 分钟。

问题描述:编写一个函数,参数为一个字符串,其返回值是这个字符串是否回文(即正读和反读都一样)。

解决方法:

方法一:同时从字符串头尾开始向中间扫描,如果所有字符都一样,那么这个字符串就是回文的。

实现代码如下:

public static boolean isPalindrome(String str) {        if (str == null || str.length() <= 0)            return false;        int i = 0;        int j = str.length() - 1;        while (i < j) {            if (str.charAt(i) != str.charAt(j))                return false;            i++;            j--;        }        return true;}

此方法的时间复杂度为O(n),空间复杂度为O(1)。

方法二:
可先从中间开始,然后向两边扫描查看字符是否相等。

实现代码如下:

public static boolean isPalindrome(String str) {        if (str == null || str.length() <= 0)            return false;        int len = str.length();        int mid = ((len >> 1) - 1) >= 0 ? (len >> 1) - 1 : 0;        int left = mid;        int right = len - mid - 1;        while (left >= 0) {            if (str.charAt(left) != str.charAt(right))                return false;            left--;            right++;        }        return true;}
此方法的时间复杂度为O(n),空间复杂度为O(1)。

完整代码:

转载地址:http://nptmi.baihongyu.com/

你可能感兴趣的文章
Java语言有哪些特点?
查看>>
idea创建maven项目并关联gitee
查看>>
HashMap和Hashtable的区别
查看>>
JVM 对 Java 的原生锁做了哪些优化?
查看>>
JAVA实现简单的阻塞队列
查看>>
我的2020
查看>>
idea快捷键使用
查看>>
2.1MAC协议概述
查看>>
2.3 WSN的MAC协议
查看>>
图解后缀表达式的计算过程
查看>>
栈与队列的应用——计算表达式的值
查看>>
静态链表——sharing
查看>>
静态链表——sorting
查看>>
DFS——背包问题
查看>>
DFS——选数问题
查看>>
BFS——求矩阵中“块”的个数
查看>>
BFS——走迷宫的最小步数
查看>>
并查集——好朋友
查看>>
关键路径
查看>>
Web前端学习笔记——JavaScript之事件详解
查看>>