栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

判断回文串[Java]

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

判断回文串[Java]

判断回文串

利用顺序栈方法1顺序栈方法2双指针源代码

利用顺序栈方法1

思路:先将字符串的前一半进栈,然后再顺序遍历后一半,如果不同则直接退出,相同则弹栈继续比较下一个,若遍历结束后栈为空则说明每一位都匹配上了,说明是回文。

private static void method1(){
        String s = "123456";
        ArrayStack stack = new ArrayStack<>();
        for (int i = 0; i 
顺序栈方法2 

思路:若栈不为空或栈顶与当前字符不同则入栈,若栈顶与当前字符相同则弹栈,遍历结束后判断栈是否为空,为空则说明是回文。
ps:此方法不能判断出如"112233"不是回文,当遍历到第二个1时因为栈顶是第一个1,便会弹栈,22和33也是,遍历后栈也是空。

private static void method2() {
        String text = "上海自来水来自海上";  
        ArrayStack stack = new ArrayStack<>();
        for (int i = 0; i < text.length(); i++) {
            if (text.length() % 2 == 1 && i == text.length() / 2) { //遍历到奇数的中间位置时跳过
                continue;
            }
            char c = text.charAt(i);
            if (stack.isEmpty() || c != stack.peek()) {
                stack.push(c);
            } else {
                stack.pop();
            }
        }
        System.out.println(stack.isEmpty());
    }
双指针

思路:变量i指向字符串首,j指向字符串末尾,比较i指向的字符和j指向的字符,如果不同则直接返回false,相同则i向前移一位,j向后移一位,继续判断。当i>=j则说明没有不同,循环结束返回true。

private static boolean method3(){
        String s = "112233";
        for (int i=0,j=s.length()-1; i 
源代码 
package p0.测试;

import p2.线性结构.ArrarList;
import p2.线性结构.ArrayStack;

import java.util.Comparator;
import java.util.Iterator;
import java.util.Random;

public class Try {
    public static void main(String[] args) {
        method1();
        method2();
        System.out.println(method3());
    }

    private static void method1(){
        String s = "123456";
        ArrayStack stack = new ArrayStack<>();
        for (int i = 0; i stack = new ArrayStack<>();
        for (int i = 0; i < text.length(); i++) {
            if (text.length() % 2 == 1 && i == text.length() / 2) { //遍历到奇数的中间位置时跳过
                continue;
            }
            char c = text.charAt(i);
            if (stack.isEmpty() || c != stack.peek()) {
                stack.push(c);
            } else {
                stack.pop();
            }
        }
        System.out.println(stack.isEmpty());
    }

    private static boolean method3(){
        String s = "112233";
        for (int i=0,j=s.length()-1; i
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/703481.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号