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

这篇具有很好参考价值的文章主要介绍了算法竞赛字符串常用操作大全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

大家好 我是寸铁💪

考前需要刷大量真题,大家一起相互监督,每日做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()遇到空格直接停下来,后面的数字都不读入。
算法竞赛字符串常用操作大全,蓝桥杯上岸,算法,蓝桥杯,java,经验分享,笔记,数据结构,leetcode

那像这种读入呢?

算法竞赛字符串常用操作大全,蓝桥杯上岸,算法,蓝桥杯,java,经验分享,笔记,数据结构,leetcode

输入原题

有同学一看这中间无空格应该用**sc.nextLine()**读入
我们来试一下~!
算法竞赛字符串常用操作大全,蓝桥杯上岸,算法,蓝桥杯,java,经验分享,笔记,数据结构,leetcode

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

为什么???

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

那怎么才不会读错呢?

很简单,用**sc.next()**,**遇到空格便停下来,不会读入多余的空格!
算法竞赛字符串常用操作大全,蓝桥杯上岸,算法,蓝桥杯,java,经验分享,笔记,数据结构,leetcode


读入二维字符数组

一些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')文章来源地址https://www.toymoban.com/news/detail-594574.html

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

到了这里,关于算法竞赛字符串常用操作大全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • String字符串,FastJson常用操作方法

    1、创建配置环境 注意 测试的时候需要更改一下idea的设置 2、FastJson简介 3、 序列化 测试 JSON.toJSONString(序列化java对象) 4、 反序列化 5、枚举介绍 6、JSONField注解的使用 1、注解 2、作用于字段上面 3、格式化日期时间 4、指定字段不序列化 5、指定字段顺序 6、自定义序列化内容

    2024年02月21日
    浏览(55)
  • 【JAVA】java常用字符串操作技巧

    Java定义字符串 不论使用哪种形式创建字符串,字符串对象一旦被创建,其值是不能改变的,但可以使用其他变量重新赋值的方式进行更改。 直接定义字符串 直接定义字符串是指使用双引号表示字符串中的内容,如: String str=\\\"Hello Java\\\"; 或者 String str; str=\\\"Heilo Java\\\"; 字符串变量

    2024年02月04日
    浏览(41)
  • vue(javaScript) 操作字符串的常用方法

    1. 获取字符串长度 JavaScript中的字符串有一个length属性,该属性可以用来获取字符串的长度 2. 获取字符串指定位置的值 charAt()和charCodeAt()方法都可以通过索引来获取指定位置的值 charAt() 方法获取到的是指定位置的字符; charCodeAt()方法获取的是指定位置字符的Unicode值。 (1)

    2024年02月03日
    浏览(44)
  • Java中的String类的常用方法(对于字符串的常用操作)

    目录 一、获取指定索引的字符 二、 获取指定字符或者字符串的索引位置 三、判断字符串是否以指定内容开头或结尾 四、替换指定的字符或者是字符串 五、获取字符串的子串 六、将字符串转换为字符数组  七、比较字符串的内容是否相等  八、连接字符串 九、比较两个字

    2024年02月20日
    浏览(73)
  • 盘点 Python 中字符串的常用操作,对新手极度友好

    在 Python 中字符串的表达方式有四种 一对单引号 一对双引号 一对三个单引号 一对三个双引号 a = ‘abc’ b= “abc” c = ‘’‘abc’‘’ d = “”“abc”“” print(type(a)) # class ‘str’ print(type(b)) # class ‘str’ print(type©) # class ‘str’ print(type(d)) # class ‘str’ 单双引号混合使用 a

    2024年02月10日
    浏览(53)
  • 【c#】c#常用小技巧方法整理(5)—— 字符串操作类

    1、GetStrArray(string str, char speater, bool toLower) 把字符串按照分隔符转换成 List 2、GetStrArray(string str) 把字符串转 按照, 分割 换为数据 3、GetArrayStr(List list, string speater) 把 List 按照分隔符组装成 string 4、GetArrayStr(List list) 得到数组列表以逗号分隔的字符串 5、GetArrayValueStr(Dictionaryin

    2023年04月23日
    浏览(41)
  • 深入了解字符串处理算法与文本操作技巧

    引言 字符串处理是计算机科学和数据处理的核心领域之一。本博客将深入介绍一些常见的字符串处理算法和文本操作技巧,包括字符串匹配、搜索、正则表达式、字符串操作和文本标准化等。 暴力匹配算法 什么是暴力匹配? 暴力匹配算法是一种最简单的字符串匹配方法,它

    2024年02月10日
    浏览(53)
  • 算法刷题|583.两个字符串的删除操作、72.编辑距离

    题目:给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 dp[i][j] 表示以i-1结尾的word1子序列和以j-1结尾word2变成相同所需要的最小的步数为dp[i][j] 递推公式:分两种情况,word1.charAt(i-1) 和 word2.charAt(j-1)是否

    2024年02月08日
    浏览(46)
  • 蓝桥杯单片机 ——接收字符、字符串

     1定时器中断方法 (完整代码在文末!!)  2.定时的方法(推荐): 蓝桥杯单片机第十四届第三次模拟题_让我来瞅一瞅的博客-CSDN博客 定时器0——定时功能        判断接受数据是否完成  定时器1——串口功能           接受、发送数据   1.接受、发送 均为文本模式

    2023年04月17日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包