算法竞赛字符串常用操作大全

news2024/11/26 7:33:58

算法竞赛字符串常用操作总结来啦~ 👊

大家好 我是寸铁💪

考前需要刷大量真题,大家一起相互监督,每日做N题,一起上岸吧✌️ ~

冲刺蓝桥杯省一模板大全来啦 💥 ~

蓝桥杯4月8号就要开始了 🙏 ~

还没背熟模板的伙伴们背起来 💪 💪 💪

祝大家4月8号蓝桥杯上岸 ☀️ ~

不清楚蓝桥杯考什么的点点下方👇

考点秘籍

想背纯享模版的伙伴们点点下方👇

蓝桥杯省一你一定不能错过的模板大全(第一期)

蓝桥杯省一你一定不能错过的模板大全(第二期)

想背注释模版的伙伴们点点下方👇

蓝桥杯必背第一期

蓝桥杯必背第二期

往期精彩回顾

蓝桥杯上岸每日N题 第一期(一)!!!

蓝桥杯上岸每日N题第一期(二)!!!

蓝桥杯上岸每日N题第一期(三)!!!

蓝桥杯上岸每日N题第二期(一)!!!

蓝桥杯上岸每日N题第三期(一)!!!

操作系统期末题库 第九期(完结)

LeetCode Hot100 刷题(第三期)

idea创建SpringBoot项目报错解决方案

数据库SQL语句(期末冲刺)

想看JavaB组填空题的伙伴们点点下方 👇

填空题


算法竞赛字符串常用操作总结

看了网上的博客大部分总结的不是很全或者比较实用,于是自己总结了一些常用的方法,也不单是算法竞赛,其他比较常见的操作也概括进来了,如有错漏,欢迎补充 🌹 🌹🌹

一、输入字符串

快读快写

Bufferedreader bf=new BufferedReader(new InputStreamReader(System.in));
String s[]=bf.readLine().split(" ")
split(" ")表示去掉输入的串中的空格
split("\")表示去掉输入的串中的\
根据题目要求,想去什么符号就在split("")引号中加什么。

int a=Integer.parseInt(s[0]);
将输入的字符串变为整数

常用输入转换:

int a[]=new int[n];
a的下标从1开始
for(int i=1;i<=n;i++){
a[i]=Integer.parseInt(s[i-1]);
}

如何读入确定行数下不确定列数的字符串/数字串?

以此题为例 👇 :

错误票据

先读入n行字符串数组

for(int i=0;i<n;i++){
String s[]=bf.readLine().split(" ");

再读入每一列的不确定个数的内容

for(int j=0;j<s.length();j++){
int num=Integer.parseInt(s[j]);
}

完整代码

for(int i=0;i<n;i++){
String s[]=bf.readLine().split(" ");
for(int j=0;j<s.length();j++){
int num=Integer.parseInt(s[j]);
}
}

Scanner读入

Scanner sc=new Scanner(System.in);
String s=sc.next();
String s=sc.nextLine();

**sc.next()**从遇到第一个有效字符(非空格、换行符)开始扫描,遇到第一个分隔符或结束符(空格’ ‘或者换行符’\n’)时结束

sc.nextLine()则是扫描剩下的所有字符串直到遇到回车为止

根据题目所需读入:

需要空格后面的输入内容用sc.nextLine()

不需要空格后面的输入内容用sc.next()

一般情况下推荐**sc.nextLine()**

有一般就会有特殊,具体视题目而定:

读入时出现空格情况,但是只要第一个串,空格后面的不能读入,如下图所示:
这时用**sc.nextLine()就会将后面的数字都读进去造成读入错误**
这时就需要用sc.next()遇到空格直接停下来,后面的数字都不读入。
在这里插入图片描述

那像这种读入呢?

在这里插入图片描述

输入原题

有同学一看这中间无空格应该用**sc.nextLine()**读入
我们来试一下~!
在这里插入图片描述

这样就会报错,出现某个字符匹配不上问题。

为什么???

注意:这里用**sc.nextLine()读取时会将空格一并读入**,但是我们不需要后面多余的空格,只需要前面的字母即可。

那怎么才不会读错呢?

很简单,用**sc.next()**,**遇到空格便停下来,不会读入多余的空格!
在这里插入图片描述


读入二维字符数组

一些BFS/DFS题目需要读入二维字符数组
java中,是没有直接读入字符这么一种操作。
因此,我们需要先读入字符串再转换成字符数组!!!

读入题:全球变暖

(1)先创建字符数组

char g[][]=new char[N][N];

(2)for循环读入

for(int i=0;i<n;i++){
    char a[]=sc.next().tocharArray();//把每一行字符串转换成字符数组
    for(int j=0;j<n;j++){
        g[i][j]=a[j];//再将每一列进行分配
    }
}

完整代码:

char g[][]=new char[N][N];
for(int i=0;i<n;i++){
    char a[]=sc.next().tocharArray();//把每一行字符串转换成字符数组
    for(int j=0;j<n;j++){
        g[i][j]=a[j];//再将每一列进行分配
    }
}

读入输入的字符串中的某个字符

String s=sc.next();
char op=s.charAt(0);
op=='a';

字符串的比较用**equals**
字符的比较用 ==

二、创建字符串

(一) String s=new String()
String s=new String("abc");

(二)String.valueOf()
String.valueOf(int i):
作用:返回 int 参数的字符串表示形式
调用**String.valueOf()方法可以得到int**形式下的表示形式。
例如:

int n=1234454;
String s=String.valueOf(n)
输出s的内容:1234454

可以替换其他参数形式详见 👇
String.valueOf()

三、 length()

作用:获取字符串的长度
int len=s.length();

四、equals()

作用:比较两字符串是否相等

String s1=sc.next();
String s2=sc.next();
s1.equals(s2)

五、s.charAt()

作用:根据字符串下标获取字符
char a=s.charAt(0);
获取字符串下标为0的字符
补充:

char []a=s.toCharArray();
char b=a[0];
转为数字:int b=a[0]-'0';

六、indexOf()

作用:返回找到的字符串/字符的起始下标,找不到则返回-1。

String s="abcd";
int a=s.indexOf("a");

七、contains()

作用:字符串中包含字符串/字符则返回true,不包含则返回false

String s=sc.next();
boolean a=s.contains("想寻找的串/字符");

八、split()

作用:去掉字符串内的某个字符
常用于输入分割空格
String s[]=bf.readLine().split(" ");

九、trim()

作用:去掉字符串两边的空格
String s[]=bf.readLine().trim(" ");

十、substring()

作用:截取字符
String s1=s2.substring(start,end);
String s1=s2.substring(1,3);

包含起始下标,不包含结束下标。


String s1=s.substring(start);
String s1=s.substring(2);

截取以2为起始下标到字符串末尾的字符串


String s2=s.substring(s.length()-n);
截取从**s.length()-n字符串末尾**的字符串
相当于保留后n位字符

String s=sc.next();
String s2=s.substring(s.length()-2);
截取从**s.length()-2字符串末尾**的字符串

相当于保留后两位字符

十一、touppercase()

将字符串里的字符都转大写
String s1=s2.touppercase();

十二、tolowercase()

将字符串里的字符都转小写
String s1=s2.tolowercase();

十三、字符串拼接

(1) 直接加: +=

String s1=sc.next();
String s2=sc.next();
s1+=s2

(2)StringBuffer类
StringBuffer s=new StringBuffer();
s.append(" ")
可以一直追加
s.append(" ").append(" ").append(" ")

十四、字符串转为字符数组

(一)写法1

char a[]=sc.next().toCharArray();

(二)写法2

String S=sc.next();
char a[]=S.toCharArray();

其他情况

如果我们是想从数组**a[]** 下标1个开始读入字符该怎么做?
很简单,在读入串之前加上一个占位符占掉**a[]a[0]位置即可。
这样就可以从数组下标
1**开始读入字符

注意:

" "+sc.next()这一整个整体要用括号括起来,不然会报类型转换错误
正确代码如下:
(1)写法1
char a[]=(" "+sc.next()).toCharArray();
(2)写法2

char a[]=new char[N];
a=(" "+sc.next()).toCharArray();

十五、字符转数字

(一)字符串为数字串

int a=s.charAt(i)-'0';
相当于用s.charAt(i)得到的字符的ASCII码减去'0'ASCII

(二)字符串为字母串

int a=s.charAt(i)-'A';
int a=s.charAt(i)-'a';
相当于用s.charAt(i)得到的字符的ASCII码减去'A(a)'ASCII
视题目而定

十六、数字转字符

(char)(i + 'A')

看到这里,不妨关注一下💖

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

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

相关文章

一文带你了解Spring中存入Bean和获取Bean的方式

0. Spring中的五大注解 上图中就是五大类注解对应的层&#xff0c;通过源码可以看到其他四个注解都基于Conponent 1. 存入 Bean Spring既然是一个包含众多工具方法的IoC容器&#xff0c;它是一个控制反转的容器&#xff0c;所以就需要将Bean对象存入到容器中&#xff0c;需要…

excel文件导入或导出Java代码示例

1、excel文件导入 controller层接口内容 service层代码 serviceImpl内代码内容 OverrideTransactional(rollbackFor Exception.class)public void importCheckItemExcel(MultipartFile file, Long checkPkgId) throws Exception {if (file.isEmpty()){throw new IOException(…

CentOS 8 GLIBC升级失败系统崩溃抢修实战

CentOS 8 GLIBC升级失败系统崩溃抢修实战 1. 恐怖的问题2. 参考解决方案3. 抢修实战3.1 准备工作3.2 抢修流程3.3 解决启动后Permission Denied3.3.1 参考方案3.3.2 解决 4. 总结 服务器为CentOS 8&#xff0c;支持glibc版本为2.28&#xff0c;但编译一个工具的glibc需求版本为…

mysql中的行格式之compact格式分析

mysql中的行格式之compact格式分析 mysql行格式 所谓行格式&#xff0c;就是指mysql一行数据的存储格式。 InnoDB 储存引擎支持有四种行储存格式&#xff1a;Compact、Redundant、Dynamic 和 Compressed。 Redundant是很古老的行格式了&#xff0c;因为占用空间最多&#x…

Small Tip: 怎么找S4HANA所有的CDS View 以及跟BW相关的CDS View

1. 网页上找 1. SAP Business Accelerator Hub 到网址&#xff1a;https://api.sap.com 2. 到Categories底下找。如果没看见CDS View就去View all categories 3. 找到CDS Views之后&#xff0c;点击进去。 4. 按Package 分类来找&#xff1a; 2. 去help.sap.com找SAP S/4HA…

物理机传输大文件到虚拟机

物理机快速传输大文件到虚拟机 测试使用Tabby传输大文件到虚拟机 1.1 准备大文件 1.2 通过Tabby上传文件到Linux 总耗时约&#xff1a;7分钟 1.3 通过EveryThing配置服务 打开EveryThing&#xff0c;点击工具—> 选项—>http服务器 启用HTTP服务器&#xff0c;配置…

【基于 GitLab 的 CI/CD 实践】05、GitLab Pipeline 实践(下)

目录 needs 并行阶段 制品下载 include local 引入本地配置 file 引入其他项目配置 template 引入官方配置 remote 引入远程配置 extends 继承作业配置 extends & include trigger 管道触发 多项目管道 父子管道 image 准备环境 services environment inh…

文心一言 VS 讯飞星火 VS chatgpt (63)-- 算法导论6.5 2题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;63&#xff09;-- 算法导论6.5 2题 二、试说明 MAX-HEAP-INSERT(A&#xff0c;10)在堆A(15&#xff0c;13&#xff0c;9&#xff0c;5&#xff0c;12&#xff0c;8&#xff0c;7&#xff0c;4&#xff0c;0&#xff0c;6&#xf…

XR应用云流化,多方面提升 XR 扩展现实体验!

无论是使用户能够协作设计电动赛车&#xff0c;还是帮助观众通过数字世界与自然互动&#xff0c;越来越多的企业利用XR扩展现实为用户提供沉浸式逼真的虚拟环境。 下一代沉浸式技术的应用越来越广泛&#xff0c;图形和人工智能的最新突破正在扩展XR的功能。这四种技术正在XR生态…

网络安全在2023好入行吗?

前言 023年的今天&#xff0c;慎重进入网安行业吧&#xff0c;目前来说信息安全方向的就业对于学历的容忍度比软件开发要大得多&#xff0c;还有很多高中被挖过来的大佬。 理由很简单&#xff0c;目前来说&#xff0c;信息安全的圈子人少&#xff0c;985、211院校很多都才建…

K12351 生日日期

题目描述 小科的生日是YY年MM月DD日&#xff0c;他想知道自己出生第10000天纪念的日期&#xff0c;出生日算第0天 输入格式 输入三个整数&#xff0c;分别表示YY,MM,DD,其中 1949≤YY≤2016 输出格式 输出小科身体第一万天以后的日期&#xff0c;格式为YY-MM-DD 输入输出…

Jmeter+Maven+jenkins+eclipse搭建自动化测试平台

背景&#xff1a; 首先用jmeter录制或者书写性能测试的脚本&#xff0c;用maven添加相关依赖&#xff0c;把性能测试的代码提交到github&#xff0c;在jenkins配置git下载性能测试的代码&#xff0c;配置运行脚本和测试报告&#xff0c;配置运行失败自动发邮件通知&#xff0c…

Docker 基本管理与应用

目录 一、Docker介绍 1、docker概述 2、容器优势 3、Docker与虚拟机的区别 4、Docker核心概念 二&#xff1a; 安装 Docker 1、环境准备、安装依赖包 2、 设置阿里云镜像源&#xff0c;安装 Docker-CE并设置为开机自动启动 3、信息查看 ​三&#xff1a;Docker 镜像操作…

AHB协议理解

目录 Chapter1 AHB Block Diagram Ginput signal lnput signals Output Signal Chapter3 Transfers AHB接口Overview Chapter6 Data Buses HWDATA HRDATA Chapter1 Introduction AHB: Advanced High-performance Bus ( 高级高性能总线 ) 应用场景&#xff1a;针对高效率&#…

cancal报错 config dir not found

替换classpath中间封号两边的值

这款录音转文字工具让你的录音转写更加便捷

小明&#xff1a;小李&#xff0c;最近我一直在做一个听力练习&#xff0c;但是听力材料都是录音&#xff0c;手动转写真的好慢&#xff0c;有什么办法可以提高录音转写效率吗&#xff1f; 小李&#xff1a;当然有啦&#xff01;我之前也遇到过这种情况&#xff0c;最后我是通…

边缘检测之loG算子

note // 边缘检测之loG算子&#xff1a;对高斯函数求二阶导数 // G(x,y) exp(-1 * (x*x y*y) / 2 / sigma / sigma) // loG(x,y) ((x*x y*y - 2 * sigma * sigma) / (sigma^4)) * exp(-1 * (x*x y*y) / 2 / sigma /sigma) /* [ 0,0,-1,0,0; 0,-1,-2,-1,0; -1,-2,16,-2…

『红外图像 数据增强』DDE(Digital Detail Enhancement)算法

DDE处理的细节 分离背景层和细节层&#xff1a;使用特殊的滤波器&#xff0c;将图像分成背景层和细节层。背景层通常包含低频信息&#xff0c;而细节层包含高频信息。 对背景层进行灰度增强&#xff1a;通过对背景层应用适当的灰度增强算法&#xff0c;提高背景层的对比度和视…

数据结构(王道)——数据结构之 二叉树的存储结构

一、顺序存储 静态顺序存储 顺序存储的二叉树结构特性&#xff1a; 顺序存储的非完全二叉树特性 不完全二叉树的可能会浪费大量空间&#xff0c;所以一般顺序存储二叉树比较少用。 图示为什么很少用顺序存储来存二叉树 顺序存储的二叉树总结&#xff1a; 二、链式存储 二叉链表…

MYSQL数据库-数据库的学习

MYSQL数据库-数据库的学习 MYSQL数据库一、数据库的基本概念二、常见的数据库三、MySQL数据库四、SQL操作五、SQL高级操作六、SQL函数&#xff08;SQL 拥有很多可用于计数和计算的内建函数) MYSQL数据库 一、数据库的基本概念 1、数据库的英文单词:DataBase 简称 : DB 2、什么…