JAVA工具类匹配重复或者连续的字符和符号

import java.util.ArrayList;
import java.util.List;public class StringChecker {static String SYMBOLS = "~!@#$%^&*()_+{}|<>?,./";static List<String> symbolSubstrings = splitStringIntoSubstrings(SYMBOLS, 3);/*** 检查字符串是否包含重复或递增的字符** @param str 要检查的字符串* @return 如果字符串包含重复或递增的字符,则返回true;否则返回false*/public static boolean containsRepeatingOrIncrementalChars(String str) {int length = str.length();if (length < 3) {return false;}int[] asciiArray = convertToAsciiArray(str);for (int i = 0; i < asciiArray.length; i++) {if (i >= asciiArray.length - 2) {break;}int current = asciiArray[i];int next = asciiArray[i + 1];int afterNext = asciiArray[i + 2];// 校验重复或递增的数字或字母if ((next == current + 1 && afterNext == next + 1) || (current == next && next == afterNext)) {return true;}}for (String symbol : symbolSubstrings) {if (str.contains(symbol)) {return true;}}return false;}/*** 将字符串按指定长度拆分成子串** @param str             要拆分的字符串* @param substringLength 子串的长度* @return 拆分后的子串列表*/public static List<String> splitStringIntoSubstrings(String str, int substringLength) {List<String> substrings = new ArrayList<>();for (int i = 0; i < str.length(); i++) {if (i + substringLength > str.length()) {break;}int endIndex = Math.min(i + substringLength, str.length());String substring = str.substring(i, endIndex);substrings.add(substring);}return substrings;}/*** 将字符串转换为ASCII码数组** @param str 要转换的字符串* @return ASCII码数组*/public static int[] convertToAsciiArray(String str) {int[] asciiArray = new int[str.length()];for (int i = 0; i < str.length(); i++) {asciiArray[i] = (int) str.charAt(i);}return asciiArray;}public static void main(String[] args) {System.out.println(containsRepeatingOrIncrementalChars("abc3132132"));    // trueSystem.out.println(containsRepeatingOrIncrementalChars("123fasfadfas")); // trueSystem.out.println(containsRepeatingOrIncrementalChars("!@#dfafa"));      // trueSystem.out.println(containsRepeatingOrIncrementalChars("aabc"));          // trueSystem.out.println(containsRepeatingOrIncrementalChars("fas12@##"));      // false}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust与其他语言对比:优势在哪里?

大家好&#xff01;我是lincyang。 今天&#xff0c;我们将深入探讨Rust语言与其他编程语言比较的优势&#xff0c;并通过具体的代码示例和性能数据来加深理解。 Rust与其他语言的比较 1. 内存安全性 Rust&#xff1a;采用所有权系统&#xff0c;编译器在编译时检查内存安全…

西南科技大学814考研二

C语言数据结构与算法 线性表 顺序表(静态分配内存) #include <stdio.h> #include <stdbool.h> //静态顺序表 #define MAX_SIZE 8 //顺序表储存的数据类型 typedef int ElemType; typedef struct {ElemType data[MAX_SIZE];int length; }SeqList; //初始化顺序表…

redis 非关系型数据库

redis 非关系型数据库&#xff0c;缓存型数据库。 关系型数据库和非关系型数据库的区别 关系型数据库是一个机构化的数据库&#xff0c;行和列。 列&#xff1a;声明对象 行&#xff1a;记录对象属性。 表与表之间是有关联&#xff0c;使用sql语句&#xff0c;来对指定的表…

Oracle 存储过程数据插入临时表慢以及SQL语句查询慢

/*parallel*/ 解释: 一般表数据量比较大&#xff08;超过100万&#xff09;时&#xff0c;可以使用parallel强制启动并行度来提升查询速度 用法&#xff1a;/*parallel(table_short_name,cash_number)*/ 可以加到insert、delete、update、select的后面来使用 比如&#xff…

Linux:安装MySQL服务(非docker方式)

1、下载安装包 下载MySQL安装包&#xff0c;需要Oracle官网的账号 下面是网友提供的账号及密码&#xff0c;亲测有效。 账户&#xff1a;3028064308qq.com 我用的这个&#xff0c;可以登陆 密码&#xff1a;OraclePassword123!Oracle Account: 602205528qq.com Oracle Pass…

计算机毕业设计选题推荐-掌心办公微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

根据表名动态获取数据

查询接口 ApiOperation("通用高级搜索")PostMapping("/highSearch")public ResponseResult highSearch(RequestBody HighSearchVO highSearchVO) {return dynamicDataRetrievalService.highSearch(highSearchVO);} Service OverrideTransactionalpublic R…

list转map(根据某个或多个属性分组)

需要将对应的list换成本地list&#xff0c;和对象换成本地对象 1、List转Map<String,List> // 根据一个字段分组 Map<String, List<String>> map objectLists.stream().collect(Collectors.groupingBy(Object::getName,Collectors.mapping(Object::getId, …

【小技巧】MyBatis 中 SQL 写法技巧小总结

最近有个兄弟在搞mybatis&#xff0c;问我怎么写sql &#xff0c;说简单一点mybatis就是写原生sql&#xff0c;官方都说了 mybatis 的动态sql语句是基于 OGNL表达式的。可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: if 语句 (简单的条件…

r语言plot函数

R语言中的plot()函数是一个用于创建各种类型的图形的基本绘图函数。它可以用来绘制散点图、线图、直方图、箱线图、饼图等多种图形。以下是plot()函数的基本语法和一些示例用法&#xff1a; 基本语法: plot(x, y, type "p", ...) 参数说明: x: 用于绘图的x轴数据&a…

分形简单版

我的代码&#xff1a; #include<bits/stdc.h> using namespace std; const int N1000; int n; char s[N][N]; void work(int x) {if(x1) {s[0][0]*;return;}work(x-1);for(int i0;i<(1<<x-2);i)for(int j(1<<x-2);j<(1<<x-1);j) s[i][j]s[i][j-(…

Java的IO流-打印流

打印流 PrintStream public void println&#xff08;&#xff09;自动换行 PrintWriter package com.itheima.println;import java.io.FileInputStream; import java.io.PrintStream; import java.io.PrintWriter;public class Test2 {public static void main(String[] arg…

MSSQL-逻辑级常用命令

--SQL Server 查询表的记录数 --one: 使用系统表. SELECT object_name (i.id) TableName, rows as RowCnt FROM sysindexes i INNER JOIN sysObjects o ON (o.id i.id AND o.xType U ) WHERE indid < 2 ORDER BY rows desc ————————————…

【Linux】第十九站:进程替换

文章目录 一、单进程版---最简单的程序替换二、进程替换的原理三、多进程的程序替换1.多进程的程序替换实例2.那么程序在替换时候有没有创建子进程呢3.再谈原理4.一个现象5.我们的CPU如何得知程序的入口地址&#xff1f; 四、各个接口的介绍1.execl2.execlp3.execv4.execvp5.ex…

【Spring Boot】使用WebSocket协议完成来单提醒及客户催单功能

1 WebSocket介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信(双向传输)——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 1.1 HTTP协议和WebSocket协议对比 1、HTTP是短…

SMB over QUIC帮助实现文件服务器在公网安全共享

要在Internet边缘服务器提供安全、可靠的共享连接&#xff0c;可以通过安全的SMB over QUIC来取代传统的TCP网络传输。 QUIC 是 IETF 标准化协议&#xff0c;与 TCP 相比具有许多优势&#xff1a; 所有数据包始终加密&#xff0c;握手使用 TLS 1.3 进行身份验证可靠和不可靠应…

Linux常用命令亲测总结

在实际开发中&#xff0c;经常会进行下位机的搭建&#xff0c;在搭建过程中&#xff0c;对于常用的LInux命令进行总结&#xff0c;方便自己使用 1.rm -rf 删除对应文件&#xff08;字节小的&#xff09; 2、ln -s 文件关联&#xff08;长的关联短的。三个则关联两次&#xff0…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(六)

新增菜品 1.1 需求分析与设计1.1.1 产品原型1.1.2 接口设计1.1.3 表设计 2.2 代码开发2.2.1 文件上传实现2.2.2 新增菜品实现 2.3 功能测试 1.1 需求分析与设计 1.1.1 产品原型 后台系统中可以管理菜品信息&#xff0c;通过 新增功能来添加一个新的菜品&#xff0c;在添加菜品…

vue使用本地图片设置为默认图

一、引用 import imgSrc /assets/common/image/xxx.png 二、赋值给变量 defaultImg:imgSrc, 三、将变量给img标签 <img :src"defaultImg:imgSrc" alt"icon"> 注意&#xff1a;这里直接使用路径给变量是无法实现的哟

解决ubuntu23.10 virtualbox 启动错误modprobe vboxdrv, Kernel driver not installed

- 参考视频&#xff1a;https://www.youtube.com/watch?vAKAq2LGu_zs sudo apt updatesudo apt install --reinstall linux-headers-$(uname -r) virtualbox-dkms dkms# 重启系统&#xff0c;然后再执行下面一条命令sudo modprobe vboxdrv