博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《算法笔记》例题解析 第3章入门模拟--6字符串处理(9题)2021-03-04
阅读量:4100 次
发布时间:2019-05-25

本文共 3921 字,大约阅读时间需要 13 分钟。

统计字符

题目描述

Time Limit: 1000 ms

Memory Limit: 256 mb
统计一个给定字符串中指定的字符出现的次数。

输入描述:

测试输入包含若干测试用例,每个测试用例包含2行,第1行为一个长度不超过5的字符串,第2行为一个长度不超过80的字符串。注意这里的字符串包含空格,即空格也可能是要求被统计的字符之一。当读到’#'时输入结束,相应的结果不要输出。

输出描述:

对每个测试用例,统计第1行中字符串的每个字符在第2行字符串中出现的次数,按如下格式输出:

c0 n0
c1 n1
c2 n2
其中ci是第1行中第i个字符,ni是ci出现的次数。

代码

#include 
#include
char s[10];char t[100];int main(){
while (1) {
gets(s); if (s[0] == '#') break; gets(t); int ls = strlen(s); int lt = strlen(t); for (int i = 0; i < ls; i++) {
int cnt = 0;//c出现次数 for (int j = 0; j < lt; j++) {
if (s[i] == t[j]) cnt++; } printf("%c %d\n", s[i], cnt); } } return 0;}

首字母大写

题目描述

Time Limit: 1000 ms

Memory Limit: 256 mb
对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。 在字符串中,单词之间通过空白符分隔,空白符包括:空格(’ ‘)、制表符(’\t’)、回车符(’\r’)、换行符(’\n’)。

输入描述:

输入一行:待处理的字符串(长度小于100)。

输出描述:

可能有多组测试数据,对于每组数据,输出一行:转换后的字符串。

代码:

#include 
#include
char s[105];int main(){
while(gets(s)){
int len = strlen(s); int flag = 0; for (int i = 0; i < len; i++) {
if (flag == 0&&s[i] != ' ') {
if (s[i] >= 'a' && s[i] <= 'z') s[i] = s[i] - 32; flag = 1; }else if (s[i] == ' ') {
flag = 0; } } printf("%s\n",s); } return 0;}

字符串匹配

题目

输入子串a,以及另一个匹配的b串。

输出a在b中出现的次数

代码

#include 
#include
char s[105];char t[105];int main() {
scanf_s("%s%s",&s,sizeof(s),&t, sizeof(t)); int ls = strlen(s); int lt = strlen(t); int sum = 0; for (int i = 0; i < lt;i++) {
int flag = 0; for (int j = 0; j < ls;j++) {
if (s[j]!=t[i+j]) {
flag = 1; } } if (flag == 0) sum++; } printf("%d\n",sum); return 0;}

加密算法

题目描述

Time Limit: 1000 ms

Memory Limit: 256 mb
编写加密程序,加密规则为:将所有字母转化为该字母后的第三个字母,即A->D、B->E、C->F、…、Y->B、Z->C。小写字母同上,其他字符不做转化。输入任意字符串,输出加密后的结果。
例如:输入"I love 007",输出"L oryh 007"

输入描述:

输入一行字符串,长度小于100。

输出描述:

输出加密之后的 。

代码

#include 
#include
char s[105];int main(){
gets(s); for (int i= 0;i
='a'&&s[i]<='z'){
s[i]+=3; if(s[i]>'z') s[i]-=26; }else if(s[i]>='A'&&s[i]<='Z'){
s[i]+=3; if(s[i]>'Z') s[i]-=26; }else continue; } printf("%s",s); return 0;}

删除字符串2

题目描述

Time Limit: 1000 ms

Memory Limit: 256 mb
给你一个字符串S,要求你将字符串中出现的所有"gzu"(不区分大小写)子串删除,输出删除之后的S。
就是说出现“Gzu”、“GZU”、“GZu”、"gzU"都可以删除。

输入描述:

输入一行字符串S,长度不超过100。

输出描述:

输出进行删除操作之后的S。

代码

//子串确定的通用模板#include 
#include
//此处子串可以char s[105];//子串char t[105];//母串char t_lower[105];//小写字母的存储int f[105];int main (){
scanf("%s%s",&s,&t); int ls = strlen(s); int lt = strlen(t); for (int i=0;i
='A' && t[i]<='Z'){
t_lower[i] = t[i]+32; }else t_lower[i] = t[i]; } for (int i = 0; i < lt ;i++){
//遍历目标串 int flag = 0; for(int j = 0;j < ls;j++){
//子串 if(s[j] != t_lower[i+j]){
flag = 1; } } if (flag == 0){
//有匹配成功 for (int j = i;j

查找 - 北邮

题目描述

Time Limit: 1000 ms

Memory Limit: 256 mb
读入一组字符串(待操作的),再读入一个int n记录记下来有几条命令,总共有2中命令:1、翻转 从下标为i的字符开始到i+len-1之间的字符串倒序;2、替换 命中如果第一位为1,用命令的第四位开始到最后的字符串替换原读入的字符串下标 i 到 i+len-1的字符串。每次执行一条命令后新的字符串代替旧的字符串(即下一条命令在作用在得到的新字符串上)。 命令格式:第一位0代表翻转,1代表替换;第二位代表待操作的字符串的起始下标int i;第三位表示需要操作的字符串长度int len。

输入描述:

输入有多组数据。

每组输入一个字符串(不大于100)然后输入n,再输入n条指令(指令一定有效)。

输出描述:

根据指令对字符串操作后输出结果。

代码

#include
#include
using namespace std;int main() {
string s;//带操作字符串 int n;//n个操作指令 while(cin>>s){
cin>>n; for(int i=0;i
>x; int op=x[0]-'0';//操作符 int start=x[1]-'0';//起始位置 int len=x[2]-'0';//长度 int str_len=x.size();//替换的字符长度+3 if(op==0){
reverse(s.begin()+start,s.begin()+start+len); }else{
s.replace(start,len,x,3,str_len-3); } cout<
<

总结

先用二维数组方法解题,过于麻烦。参考答案之后发现string更利于解题。

replace:
replace() 方法返回一个由替换值替换一些或所有匹配的模式后的新字符串。模式可以是一个字符串或者一个正则表达式, 替换值可以是一个字符串或者一个每次匹配都要调用的函数。

转载地址:http://opzsi.baihongyu.com/

你可能感兴趣的文章
我去!原来大神都是这样玩转「多线程与高并发」的...
查看>>
当你无聊时,可以玩玩 GitHub 上这个开源项目...
查看>>
B 站爆红的数学视频,竟是用这个 Python 开源项目做的!
查看>>
安利 10 个让你爽到爆的 IDEA 必备插件!
查看>>
自学编程的八大误区!克服它!
查看>>
GitHub 上的一个开源项目,可快速生成一款属于自己的手写字体!
查看>>
早知道这些免费 API,我就可以不用到处爬数据了!
查看>>
Java各种集合类的合并(数组、List、Set、Map)
查看>>
JS中各种数组遍历方式的性能对比
查看>>
Mysql复制表以及复制数据库
查看>>
进程管理(一)
查看>>
linux 内核—进程的地址空间(1)
查看>>
存储器管理(二)
查看>>
开局一张图,学一学项目管理神器Maven!
查看>>
Android中的Binder(二)
查看>>
Framework之View的工作原理(一)
查看>>
Web应用架构
查看>>
设计模式之策略模式
查看>>
深究Java中的RMI底层原理
查看>>
用idea创建一个maven web项目
查看>>