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

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

大家好 我是寸铁💪

考前需要刷大量真题,大家一起相互监督,每日做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')

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

利用 jenkins 关联 Job 方式完善 RobotFramework 测试 Setup 以及 Teardown 后操作

目录 1.前言 2.Jekins 关联 Job 方式 1.前言 Jenkins是一个流行的持续集成和交付工具&#xff0c;它可以帮助自动化构建、测试和部署软件。与Robot Framework结合使用&#xff0c;可以实现更高效的测试工作流程。 在Robot Framework中&#xff0c;Setup和Teardown是测试用例…

Kafka 深度剖析

1、应用场景 1.1 kafka场景 Kafka最初是由LinkedIn公司采用Scala语言开发&#xff0c;基于ZooKeeper&#xff0c;现在已经捐献给了Apache基金会。目前Kafka已经定位为一个分布式流式处理平台&#xff0c;它以 高吞吐、可持久化、可水平扩展、支持流处理等多种特性而被广泛应用…

JavaSwing+MySQL的飞机订票系统(内含oracle版本)

点击以下链接获取源码&#xff1a; https://download.csdn.net/download/qq_64505944/88055544 JDK1.8 MySQL5.7 功能&#xff1a;接收客户端发来的数据、处理客户端发来的数据、发送数据包到客户端&#xff1b;客户端&#xff1a;查询所有航班的信息、查看自己所定的票、订票…

java学习路程之篇二、知识点、配置JAVA_HOME、跨平台、JVM、JRE、JDK

文章目录 1、Java背景介绍2、Java跨平台性3、JDK的下载和安装4、第一个Java程序5、HelloWorld案例详解6、JVM、JRE和JDK7、配置JAVA_HOME 1、Java背景介绍 2、Java跨平台性 3、JDK的下载和安装 4、第一个Java程序 5、HelloWorld案例详解 6、JVM、JRE和JDK 7、配置JAVA_HOME

Bash 第十行

195 第十行 给定一个文本文件 file.txt&#xff0c;请只打印这个文件中的第十行。 示例: 假设 file.txt 有如下内容&#xff1a; Line 1 Line 2 Line 3 Line 4 Line 5 Line 6 Line 7 Line 8 Line 9 Line 10 你的脚本应当显示第十行&#xff1a; Line 10 来源&#xff1a;…

详解使用JAVA将Julian date(儒略日)日期转换为年月日

一、什么是Julian date 朱莉安日历和普通日历显示是不一样的我就举例演示一下 正常的日历显示 朱莉安的日历显示 174表示的是从2016年1月1日开始到今天已有174天了 普通日历是按月计数&#xff0c;朱莉安日历是按年计数 二、用java将julian日期转换为年月日 将2023199朱莉安…

【数据结构】24王道考研笔记——图

六、图 目录 六、图定义及基本术语图的定义有向图以及无向图简单图以及多重图度顶点-顶点间关系连通图、强连通图子图连通分量强连通分量生成树生成森林边的权、带权网/图特殊形态的图 图的存储及基本操作邻接矩阵邻接表法十字链表邻接多重表分析对比图的基本操作 图的遍历广度…

pytorch实现线性回归

转大佬笔记 代码&#xff1a; # -*- coding: utf-8 -*- # Time : 2023-07-14 14:57 # Author : yuer # FileName: exercise05.py # Software: PyCharm import matplotlib.pyplot as plt import torch# x,y是3行1列的矩阵&#xff0c;所以在[]中要分为3个[] x_data torch.…

系统学习Linux-SSH远程服务(二)

概念 安全外壳协议&#xff0c;提供安全可靠的远程连接 特点 ssh是工作在传输层和应用层的协议 ssh提供了一组管理命令 ssh 远程登陆 scp 远程拷贝 sftp 远程上传下载 ssh-copy-id ssh keygen 生成 提供了多种身份验证机制 身份验证机制 密码验证 需要提供密码 密…

Django实现接口自动化平台(十二)自定义函数模块DebugTalks 序列化器及视图【持续更新中】

上一章&#xff1a; Django实现接口自动化平台&#xff08;十一&#xff09;项目模块Projects序列化器及视图【持续更新中】_做测试的喵酱的博客-CSDN博客 本章是项目的一个分解&#xff0c;查看本章内容时&#xff0c;要结合整体项目代码来看&#xff1a; python django vue…

Python SMTP发送邮件

如何使用Python发送QQ邮件&#xff1f;如何发送带附件的邮件&#xff1f;这篇文章将详细说明 目录 一、发送邮件 二、发送HTML格式的邮件 三、在HTML中添加图片 四、发送带附件的邮件 五、最终整合版 六、配置指引 一、发送邮件 import smtplib from email.mime.text im…

【UE4 塔防游戏系列】09-防御塔升级、击杀敌人增加金钱

目录 效果 步骤 一、控件蓝图文本控件内容绑定金钱数 二、防御塔改造 三、击杀敌人增加金钱 四、防御塔升级功能 效果 步骤 一、控件蓝图文本控件内容绑定金钱数 1. 打开“TaFangGameMode”&#xff0c;新增一个变量命名为“PlayerMoney”&#xff0c;默认值设为2…

【Maven三】——maven生命周期和插件

系列文章目录 Maven之POM介绍 maven命令上传jar包到nexus 【Maven二】——maven仓库 maven生命周期和插件 系列文章目录前言一、什么是生命周期&why1.三套生命周期2.clean生命周期3.default生命周期4.site生命周期5.命令行与生命周期 二、插件目标三、插件绑定1.内置绑定2…

软通动力与华秋达成生态共创合作,共同推动物联网硬件创新

7月11日&#xff0c;在2023慕尼黑上海电子展现场&#xff0c;软通动力信息技术(集团)股份有限公司(以下简称“软通动力”)与深圳华秋电子有限公司(以下简称“华秋”)签署了生态共创战略合作协议&#xff0c;共同推动物联网硬件生态繁荣发展。当前双方主要基于软通动力的产品及解…

GO语言GMP模型

目录 程序入口 协程主动让出: 被动让出: schedule 监控线程 程序入口 在执行一系列检查和初始化&#xff08;创建多少个P&#xff0c;与M&#xff10;关联&#xff09;后&#xff0c;进入runtime.main,创建main goroutine,执行mian.mian。 一开始GO语言的调度只有M和G。每个M…

基于Selenium+Python的web自动化测试框架

一、什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE&#xff1a;Firef…

Linux下Nginx升级

nginx版本升级不会覆盖配置文件&#xff0c;但以防万一升级前请先备份配置文件或者配置文件夹 默认配置文件地址&#xff1a;/usr/local/nginx/conf/nginx.conf 1.下载 wget -c http://nginx.org/download/nginx-1.24.0.tar.gz 2.解压 tar -xvf nginx-1.24.0.tar.gz 3.nginx…

Mac的docker安装redis

Mac的docker安装redis 1、docker search redis NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source key-value store that… 12205 …

git如何撤销commit(未push)

文章目录 前言undo commitreset current branch to here Undo Commit&#xff0c;Revert Commit&#xff0c;Drop Commit的区别 是否删除对代码的修改是否删除Commit记录是否会新增Commit记录Undo Commit不会未Push会&#xff0c;已Push不会不会Revert Commit会不会会Drop Com…

PHP与Golang对战:两种语言的比较与应用场景探讨

引言 在软件开发领域&#xff0c;选择一种合适的编程语言对于项目的成功至关重要。而在今天的文中&#xff0c;我们将探讨两个备受争议的编程语言——PHP与Golang之间的对战。通过比较它们的优势和应用场景&#xff0c;帮助开发者更好地了解如何选择适合自己项目的语言。 PHP的…