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

小红的回文子串(B组)

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

小红拿到了一个字符串,她可以操作最多1次:修改任意一个字符。
小红希望操作结束后,长度为3的回文连续子串的数量尽可能多。请你求出这个数量。

输入描述:

一个仅包含小写字母的字符串。长度不超过100。

输出描述:

一个整数,代表操作结束后,长度为3的回文连续子串的数量的最大值。

示例1

输入

复制abcde

abcde

输出

复制1

1

说明

将第二个字符修改为'd'即可,这样字符串变成"adcde",共包含1个长度为3的回文子串。
import java.util.Scanner;

public class Main {

    // 计算字符串 s 中三字符回文子串的个数。
    public static int countThreePalindrome(String s) {
        int count = 0;
        for (int i = 1; i < s.length() - 1; ++i) {
            if (s.charAt(i - 1) == s.charAt(i + 1)) {
                count++;
            }
        }
        return count;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        int ans = countThreePalindrome(s); // 不修改的初始回文数

        // 根据题目要求,s 长度最大为 100. 因此可以承受 O(26 * n^2) 的复杂度。
        for (int i = 0; i < s.length(); ++i) {
            for (char ch = 'a'; ch <= 'z'; ++ch) { // 枚举所有可能的字符
                StringBuilder modified = new StringBuilder(s);
                modified.setCharAt(i, ch);    // 替换当前位置的字符为 ch
                ans = Math.max(ans, countThreePalindrome(modified.toString())); // 维护替换后回文的最大数量
            }
        }

        System.out.println(ans); // 输出回文的最大数量
        scanner.close();
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        //长度为3只有两种情况 aba 和 aaa 也就是说中间那个数其实不重要 首尾决定了是否是回文串
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String s = bf.readLine();
        long res = 0;
        for (int i = 0; i + 2 < s.length(); i++) {
            if(s.charAt(i) == s.charAt(i+2)) res++;
        }

        for (int i = 2; i + 2 < s.length(); i++) {
            //最优情况 因为操作是能修改一次 只要存在这种情况直接修改 在原res基础上算上2的贡献度
            if(s.charAt(i) != s.charAt(i + 2) && s.charAt(i) != s.charAt(i - 2) && s.charAt(i - 2) == s.charAt(i + 2)){
                System.out.println(res+2);
                return;
            }
        }

        for (int i = 2; i < s.length(); i++) {
            //改成等于前面的
            if(s.charAt(i) != s.charAt(i - 2) && (i + 2 > s.length() || s.charAt(i + 2) != s.charAt(i - 2))) {
                System.out.println(res+1);
                return;
            }
        }

        for (int i = 0; i + 2 < s.length(); i++) {
            //改成等于后面的
            if(s.charAt(i) != s.charAt(i + 2) && (i - 2 < 0 || s.charAt(i + 2) != s.charAt(i - 2))) {
                System.out.println(res+1);
                return;
            }
        }
        System.out.println(res);
    }
}

相关文章:

  • 解决qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed
  • 浏览器访问https站点的过程
  • SuperMap iClient3D for WebGL 影像数据可视范围控制
  • docker和containerd从TLS harbor拉取镜像
  • AI学习第六天-python的基础使用-趣味图形
  • 基于Linux系统的物联网智能终端
  • 文字描边实现内黄外绿效果
  • 如何正确理解mAP、精度、召回率等概念
  • 北京大学DeepSeek提示词工程与落地场景(PDF无套路免费下载)
  • 考研出分24小时,人类精神状态图鉴
  • 【Mac电脑本地部署Deepseek-r1:详细教程与Openwebui配置指南】
  • 本地部署SenseVoice(包括离线设备操作)
  • Golang——内存(内存管理、内存逃逸、垃圾回收 (GC) 机制)
  • 什么是标记 PDF(Tagged PDF)?
  • Ollama下载安装+本地部署DeepSeek+UI可视化+搭建个人知识库——详解!(Windows版本)
  • 京东-零售-数据研发面经【附答案】
  • 选开源CMS建站系统时,插件越多越好吗?
  • 0x02 js、Vue、Ajax
  • 家用可燃气体探测器——家庭燃气安全的坚实防线
  • MongoDB—(一主、一从、一仲裁)副本集搭建
  • 美国失去最后一个AAA评级,资产价格怎么走?美股或将触及天花板
  • “GoFun出行”订单时隔7年扣费后续:平台将退费,双方已和解
  • 本周看啥|《歌手》今晚全开麦直播,谁能斩获第一名?
  • 350种咖啡主题图书集结上海,20家参展书店买书送咖啡
  • 马上评|清理“滥竽充数者”,为医者正名
  • 一个多月来上海交大接连“牵手”三区,在这些方面进行区校合作