当前位置: 首页 > article >正文

Leetcode:680

1,题目

2,思路

  • 首先就是判断它不发生改变会不会是回文
  • 如果不是回文,那么俩个指针从前往后与从后往前做对比
  • 如果俩字符不同,那就俩种选择,一种是保留前面的字符去掉后面字符,另一种是其反
  • 然后俩种选择只要满足一种则return true否则break

3,代码


public class Leetcode680 {
    public static void main(String[] args) {
        System.out.println(new Solution680().validPalindrome("eceec"));
    }
}

class Solution680 {
    public boolean validPalindrome(String s) {
        if (s.equals(new StringBuffer(s).reverse().toString())) {//正常反转判断字符串是否回文
            return true;
        }

        int num = 1;
        char[] arr = s.toCharArray();
        for (int i = 0, j = arr.length - 1; i < arr.length; i++, j--) {
            if (arr[i] != arr[j] && num > 0) {
                num--;
                if (fun(new StringBuffer(s), i) || fun(new StringBuffer(s), j)) {
                    return true;
                } else {
                    break;
                }
            }

        }
        return false;

    }


    public boolean fun(StringBuffer s, int i) {
        StringBuffer sb = new StringBuffer();
        sb.append(s.substring(0, i));
        sb.append(s.substring(i + 1, s.length()));
        String sb2 = sb.reverse().toString();
        sb.reverse();
        if (sb.toString().equals(sb2)) return true;
        else return false;
    }
}


http://www.kler.cn/a/531818.html

相关文章:

  • 简单理解精确率(Precision)和召回率(Recall)
  • 深入解析 clone():高效的进程与线程创建方法(中英双语)
  • Vue和Java使用AES加密传输
  • Maven的三种项目打包方式——pom,jar,war的区别
  • DeepSeek R1本地化部署 Ollama + Chatbox 打造最强 AI 工具
  • FBX SDK的使用:基础知识
  • 【流媒体】搭建流媒体服务器
  • FFM 因子分解机原理与特征域概念解析
  • 追逐低空经济,无人机研学技术详解
  • 【双指针题目】
  • Vue3学习笔记-Vue开发前准备-1
  • Rust场景示例:为什么要使用切片类型
  • Deep Sleep 96小时:一场没有硝烟的科技保卫战
  • 即梦(Dreamina)技术浅析(三):数据库与存储
  • 手写单例模式
  • Java循环操作哪个快
  • bootstrap.yml文件未自动加载问题解决方案
  • 【回溯+剪枝】优美的排列 N皇后(含剪枝优化)
  • 【游戏设计原理】98 - 时间膨胀
  • SpringBoot 引⼊MybatisGenerator
  • 【C++ STL】vector容器详解:从入门到精通
  • IBM Cognos Analytics配置LTPA SSO单点登录
  • 【02】智能合约与虚拟机
  • Node 服务器数据响应类型处理
  • SLAM技术栈 ——《视觉SLAM十四讲》学习笔记(一)
  • c++ stl 遍历算法和查找算法