简单字符串题目,也就是不涉及复杂字符串算法的简单题。 在蓝桥杯省赛中很常见,几乎每届都有。
字符串算法有:进制哈希、Manacher、字典树、回文树、KMP 、AC自动机、后缀树和后缀数组。
本文介绍 C++、Java、Python的字符串处理函数。
01
C++的字符串函数
find函数:查找
substr函数:查子串
replace函数:替换
insert函数:插入
append函数:添加字符串
swap函数:交换字符串
compare:字符串比较
有时候输入的一行字符中有空格,可以用gets读取包括空格的这一行。
下面的可执行代码,演示了这些函数的应用。
# include
usingnamespacestd;
intmain{
stringstr = "123456789abcdefghiaklmn";
for( inti= 0;i< 10;i++) //把str看成一个字符串数组
cout<
cout<< endl;
//find函数
cout<< "123的位置: "<
//输出:123的位置: 0
cout<< "34在str[2]到str[n-1]中的位置: "<
//输出:34在str[2]到str[n-1]中的位置: 2
cout<< "ab在str[0]到str[12]中的位置: "<
//输出:ab在str[0]到str[12]中的位置: 9
//substr函数
cout<< "str[3]及以后的子串:"<
//输出:str[3]及以后的子串:456789abcdefghijklmn
//若小于限制长度则报错
cout<< "从str[2]开始的4个字符:"<
//输出:从str[2]开始的4个字符:3456
//find函数
str.replace(str.find( "a"), 5, "@#");
cout<
//输出:123456789@#fghiaklmn
//insert函数
str.insert( 2, "***");
cout<< "从2号位置插入: "<
//输出:12***3456789@#fghiaklmn
//添加字符串:append函数
str.append( "$$$");
cout<< "在字符串str后面添加字符串:"<
//输出:12***3456789@#fghiaklmn$$$
//字符串长度
cout<
cout<
//交换字符串:swap函数
stringstr1= "aaa",str2= "bbb";
swap(str1, str2);
cout<
//字符串比较函数:compare,相等输出0,不等输出1
cout<
if(str1==str2) cout<< "=="; //直接比较也行
if(str1!=str2) cout<< "!=";
return0;
}
02
Python字符串处理
Python的字符处理十分简洁。下面的可执行代码,给出各种应用的例子。
str1= "12345678abcdefghi"
print(str1) #输出:12345678abcdefghi
print(str1[ 3]) #输出:4
print(str1[ 2: 5]) #输出:345 截取一部分,左闭右开
print(str1[: 5]) #输出:12345
print(str1[ 2:]) #输出:345678abcdefghi
print(len(str1)) #输出字符串长度:17
str2= "***"
str3= "abc"
#合并字符串:+
str12=str1+str2
print(str12) #输出:12345678abcdefghi***
#也可以这样合并字符串
print( ''.join([str1, str2])) #输出:12345678abcdefghi***
str_list = list(str1)
str_list.insert( 4, "***") #在str1[4]插入
aa = ''.join(str_list)
print(aa) #输出:1234***5678abcdefghi
#重复输出
print(str2* 2) #输出:******
#用\输出特殊符号
print( "\\ \" \n ") #输出:\ " 换行
#查找子串
print(str3 instr1) #输出:True
print(str3 notinstr1) #输出:False
str2,str3 = str3,str2 #交换
print(str2) #输出:abc
#比较
print(str2 == str3) #输出:False
print(str2 != str3) #输出:True
#str.find(str, beg=0, end=len(string)) 指定范围查找
print(str1.find( "345")) #输出:2
print(str1.find( "345", 10)) #输出:-1
print(str1.find( "456", 2, 20)) #输出:3
03
Java字符串函数
Java的字符串处理函数很丰富。下面给出部分函数的说明。
(1)substring
返回指定位置的子串。有两种形式:
String substring(int startIndex),起始索引(包括startIndex), 索引从 0 开始。
String substring(int startIndex,int endIndex)
起始索引(包括startIndex), 索引从 0 开始;结束索引(不包括endIndex)。
String Str = newString( "This is haha");
System.out. println(Str.substring( 4) ); //输出:is haha
System.out. println(Str.substring( 4, 10) ); //输出:is ha
(2)concat
public String concat(String s)
在字符串后面连接s,返回新字符串。
String s = "www:";
s = s.concat( "abcde.com");
System.out. println(s); //输出:www.abcde.com
(3)replace
替换。
public String replace(char searchChar, char newChar)
用newChar字符替换字符串中出现的所有 searchChar 字符,并返回替换后的新字符串。
StringStr = newString( "abcde");
System.out.println(Str.replace( 'c', 'T')); //输出:abTde
(4)trim
删除字符串的头尾空格。
(5)valueOf
返回给定参数的数值,参数可以是原生数据类型, String等。
static Integer valueOf(int i)
static Integer valueOf(String s)
static Integer valueOf(String s, int radix)
Float a = Float.valueOf( "80");
System.out. println(a); //输出:80.0
(6)toLowerCase
转换为小写
char toLowerCase(char ch)
System.out. println(Character.toLowerCase( 'a')); //输出:a
System.out. println(Character.toLowerCase( 'A')); //输出:a
(7)toUpperCase
转换为大写
public String toUpperCase
StringStr = newString( "www.com");
System.out.println( Str.toUpperCase ); //输出:WWW.COM
(8)length
字符串的长度
StringStr1 = newString( "www.com");
System.out.println(Str1.length); //输出:7
(9)charAt
截取一个字符
public char charAt(int index)
String s = "www.com";
charresult = s.charAt( 6);
System. out.println(result); //输出:m
(10)getChars 截取多个字符
将字符从字符串复制到目标字符数组。
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)
sourceStart – 字符串中要复制的第一个字符的索引。
sourceEnd – 字符串中要复制的最后一个字符之后的索引。
target 目标数组。
targetStart 目标数组中的起始偏移量。
String Str1 = newString( "www.abcde.com");
char[] Str2 = newchar[ 6];
Str1.getChars( 4, 10, Str2, 0);
System. out.println(Str2 ); //输出:abcde
(11)equals和equalsIgnoreCase
比较两个字符串
(12)regionMatches
检测两个字符串在一个区域内是否相等。
(13)startsWith和endsWith
startsWith检测字符串是否以指定的字符串开始。endWith检测字符串是否以指定的字符串结束。
(14)compareTo和compareToIgnoreCase
比较字符串
(15)indexOf和lastIndexOf
indexOf 查找字符或者子串第一次出现的地方。
lastIndexOf 查找字符或者子串后一次出现的地方。
实例讲解
算法竞赛
往期回顾
蓝桥杯省赛
基础知识点 | 全排列函数和自写排列
BFS最短路径的两种打印方法
多重背包问题和“二进制拆分”
04
参考书籍
《算法竞赛入门到进阶》
ISBN:978-7-302-52915-6
罗勇军 郭卫斌 编著
定价:59.8元
扫码优惠购书
●内容简介●
本书是算法竞赛的入门和进阶教材,包括算法思路、模板代码、知识体系、赛事相关等内容。本书把竞赛常用的知识点和竞赛题结合起来,讲解清晰、透彻,帮助初学者建立自信心,快速从实际问题入手,模仿经典代码解决问题,进入中级学习阶段。
全书分为12章,覆盖了目前算法竞赛中的主要内容,包括算法竞赛概述、算法复杂度、STL和基本数据结构、搜索技术、高级数据结构、基础算法思想、动态规划、数学、字符串、图论、计算几何。
本书适合用于高等院校开展的ICPC、CCPC等算法竞赛培训,中学NOI信息学竞赛培训,以及需要学习算法、提高计算思维的计算机工作者。
05
精彩推荐
微信小程序游戏开发│猜数字小游戏(附源码+视频)
Flink编程基础│Scala编程初级实践
Flink编程基础│FlinkCEP编程实践
Flink编程基础│DataStream API编程实践
Flink编程基础│DataSet API编程实践
数 据分析实战│客户价值分析
数据分析实战│价格预测挑战
数据分析实战│时间序列预测
数据分析实战│KaggleTitanic生存预测