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

【蓝桥杯】15届JAVA研究生组F回文字符串

一、思路

1.这题去年考的时候想的是使用全排列进行尝试,实际不用这么麻烦,只用找到第一个和最后一个非特殊字符串的位置,然后分别向内检查是否对称,向外检查是否对称直到左指针小于0(可以通过添加使其对称)

2.至于如何找到第一个和最后一个非特殊字符串的位置,这里用的栈,其实很多种方法,设两个下标记录,ArrayList等都可以

二、记忆

1.分析题目看看能不能找出规律

三、代码

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
   public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		in.nextLine();
		
		for(int i =0;i<n;i++) {
			String ss = in.nextLine();
			if(check(ss)) {
				System.out.println("Yes");
			}else {
				System.out.println("No");
			}
		}
		
		
	}
	
		public static boolean check(String ss) {
		Deque<Integer> stack = new LinkedList();
		int n = ss.length();
		for(int i =0;i<n;i++) {//找到所有非指定字符的位置
			char temp = ss.charAt(i);
			if(temp!='l' && temp!='q' && temp!='b') {
				stack.add(i);
			}
		}
    if(stack.size()==0) {
			return true;
		}
		int left = stack.getLast(),right = stack.getFirst();
		int l = stack.getLast(),r= stack.getFirst();
		while(left < right && ss.charAt(left)==ss.charAt(right)) {//两边向中间
			left++;
			right--;
		}
		
		while(l>=0 && ss.charAt(l) == ss.charAt(r)) {//两边向两边
			l--;
			r++;
		}
		
		if(left>=right && l<0) {
			return true;
		}else {
			return false;
		}
	}
}

http://www.dtcms.com/a/122694.html

相关文章:

  • STM32单片机入门学习——第29节: [9-5] 串口收发HEX数据包串口收发文本数据包
  • C++设计模式+异常处理
  • 21 天 Python 计划:MySQL 数据库初识
  • LangChain使用大语言模型构建强大的应用程序
  • 开源模型应用落地-模型上下文协议(MCP)-从数据孤岛到万物互联(一)
  • Linux 实时查看 CUDA 显卡的使用情况命令
  • 基于形状补全和形态测量描述符的腓骨游离皮瓣下颌骨重建自动规划|文献速递-深度学习医疗AI最新文献
  • 【Linux】Linux 操作系统 - 03 ,初步指令结尾 + shell 理解
  • Qt中的信号与槽及其自定义
  • mysql Creating sort index
  • 博物馆小程序怎么做?从0到1打造数字化文化窗口
  • openEuler欧拉系统配置local的yum源
  • 蓝桥杯-蓝桥幼儿园(Java-并查集)
  • 【KWDB 创作者计划】_KWDB:开源引领数据库创新变革
  • 多图超详细:Docker安装知识库AI客服RAGFlow的详细步骤、使用教程及注意事项:
  • Vue接口平台学习五——测试环境页面
  • 关于量化交易在拉盘砸盘方面应用的部分思考
  • HTML 是什么?网页创建的核心标记语言
  • 如何开发英语在线训练小程序:从0到1的详细步骤
  • spring-cloud-starter-alibaba-seata使用说明
  • C++ RAII 的用途及业务代码实现案例
  • 20周年系列|美创科技再度入围「年度高成长企业」系列榜单
  • 鸿蒙NEXT开发Preferences工具类(ArkTs)
  • Python生成器与列表的对照使用详解
  • 2025高教社杯全国大学生数学建模竞赛——5个月备赛规划
  • Spring Boot 启动后自动执行 Service 方法终极指南
  • 正则表达式补充——python
  • leetcode_707. 设计链表_java
  • Leetcode 34.在排序数组中查找元素的第一个和最后一个位置
  • 游戏引擎学习第211天