冲刺蓝桥杯第三章字符串

2024-08-30 04:20

本文主要是介绍冲刺蓝桥杯第三章字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ASCII码值、字母大小写转换、‘0’~‘9’

//数字转字符:'A'(65)'a'(97)'0'(48)
char A=char(65);
char a=char(97);
char c='a'+2;//'c'='a'+2
char seven='0'+7;//'7'='0'+7;
//字符转数字
int a='a';//a:97
int A='A';//A:65
int t='t'-'a';//可以计算字母间的差值
int seven='7'-'0';

子典序

字典序就是以ASCII码排序。
比如两个字符串 abcd 和 abdd 比较大小。 从第一个字符开始逐位比较,第一个字符不相等,谁的ASCII码值小谁的字典序就小。若第一个相等,继续逐位比较后续字符。比较到字母c < 字母d,所以第一个字符串abcd 字典序较小。
再比如 abcd 和 abcdefg 比较大小。若逐位比较都相等,但其中一个没有后续的字符了,则较短的串 abcd 字典序较小。
使用 sort() 可以对字符串进行字典序排序,字符按ASCII码值由小到大排列。

题目描述

有N个长为工的字符串、S1,S2,…拓拓将以某种顺序连接所有字符串,拼接成一个长字符串。在拼接出的所有长字符串中,找到字典序最小的一个。

输入格式

第一行两个正整数 N 和工.
接下来 N 行每行一个字符串 S1,S2,.SN

输出格式

输出一行,输出拼接出的字典序最小的字符串

样例

输入数据

3 3
dxx
axx
cxx

输出数据

axxcxxdxx

数据范围

1<=N,L<=100
对于每个i(1≤i≤N),Si的长度等于L。
对于每个i(1≤i≤N),Si全部由小写字母组成。

code:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){int n,l;cin>>n>>l;string s[100];for(int i=0;i<n;i++) cin>>s[i];sort(s,s+n);for(int i=0;i<n;i++) cout<<s[i];cout<<endl;return 0;
}

排列字母

小蓝要把一个字符串中的字母按其在字母表中的顺序排列。 例如,LANQIAO 排列后为 AAILNOQ。又如,GOODGOODSTUDYDAYDAYUP 排列后为AADDDDDGGOOOOPSTUUYYY 请问对于以下字符串,排列之后字符串是什么?WHERETHEREISAWILLTHEREISAWAY
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个由大写字母组成的字符串,在提交答案时只填写这个字符串,填写多余的内容将无法得分。

code:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){string s;cin>>s;sort(s.begin(),s.end());cout<<s<<endl;return 0;
}

字符串常用函数和reverse

#include<iostream>
#include<string>
using namespace std;
string s;
int main(){s.size();//返回字符串的长度s.length();//返回字符串的长度s.empty();//判断队列是否为空,为空返回1,否则返回0s[n];//取s中第n+1个字符reverse(s.begin(),s.end());//翻转字符串//查找s.find("ab");//返回字符串ab在s的位置s.find("ab",2);//在s[2]~s[n-1]的范围内查找并返回字符串ab在s的位置s.rfind("ab",2);//在s[0]~s[2]的范围内查找并返回字符串ab在s的位置//子串s.substr(3);//返回s[3]及其以后的子串s.substr(2,4);//返回s[2]~s[2+(4-1)]的子串,即从s[2]开始往后4个字符组成的字符串s.substring(5,10);//返回s[5]~s[9]的子串(不包含结尾)//插入s.insert(2,"ab");//从s[2]位置开始添加字符串"ab",并返回形成的新字符串s.insert(2,"abcd",3);//从s[2]位置开始添加字符串“abcd”的前3个字符,并返回形成的新字符串s.insert(2,"abcd",1,3);//从s[2]位置开始添加字符串“abcd”的前s[2]~s[2+(3-1)]个字符,并返回新形成的字符串//删除s.erase(3);//删除s[3]以及以后的字符,并返回新形成的字符串s.erase(3,5);//删除s[3]开始的5个字符,并返回新字符串//替换s.replace(2,4,"ab");//返回把s[2]~s[2+(4-1)]的内容替换为“ab”后的新字符串s.replace(2,4,"abcd",3);//返回把s[2]~s[2+(4-1)]的内容替换为“abcd”的前3个字符后的新字符串//加串s=s+"abc";s.push_back('a');//在s的尾部添加字符‘a’s.append("abc");//在s的尾部添加字符串“abc”//大小写转换//法一:tolower(s[i])//转换为小写toupper(s[i]);//转换为大写//法二://通过stl的 transform 算法配合 tolower 和 toupper 实现。//有4个参数,前2个指定要转换的容器的起止范围,第3个参数是结果存放容器的起始位置,第4个参数是一元运算。string s;transform(s.begin(),s.end(),s.begin(), : tolower); //转换小写transform(s.begin(),s.end(),s.begin(), : toupper); //转换大写        
} 

string与C语言字符串(C-string)的区别

string是C++的一个类,专门实现字符串的相关操作。具有丰富的操作方法,数据类型为 string ,字符串结尾没有 \0 字符
C-string是C语言中的字符串,用char数组实现,类型为 const char * ,字符串结尾以 \0 结尾
一般来说string向char数组转换会出现一些问题,所以为了能够实现转换,string有一个方法 c_str() 实现string向char数组的转换。

string s = "xing ma qi";
char s2[] = s.c_str();

字符串编号

题目描述:

小明发明了一种给由全大写字母组成的字符串编码的方法。对于每一个大写字母,小明将它转换成它在 26 个英文字母中序号,即 A→1,B→2,…Z→26。这样一个字符串就能被转成一个数字序列:比如 ABCXYZ→123242526。现在给定一个转换后的数字序列,小明想还原出原本的字符串。当然这样的还原有可能存在多个符合条件的字符串。小明希望找出其中字典序最大的字符串。

输入格式

输入一行一个数字序列。

输出格式

输出一行一个只包含大写字母的字符串,代表答案。

样例

输入数据

123242526

输出数据

LCXYZ

数据范围

对于 20% 的评测用例,输入的长度不超过20。对于所有评测用例,输入的长度不超过200000。

code:

#include<iostream>
#include<string>
using namespace std;
int main(){string s;cin>>s;int len=s.size();for(int i=0;i<len;i++){int a=s[i]-'0',c=stoi(s.substr(i,2));if(c>26){cout<<(char)(a+'A'-1);}else{i++;cout<<(char)(c+'A'-1);}}return 0;
}

子串

题目描述

这是一道模板题。 给定一个字符串 A 和一个字符串 B,求 B 在 A 中的出现次数。A 和 B 中的字符均为英语大写字母或小写字母。 A 中不同位置出现的 B 可重叠。

输入格式

输入共两行,分别是字符串 A 和字符串 B。

输出格式

输出一个整数,表示 B 在 A 中的出现次数。

样例

输入数据

zyzyzyz
zyz

输出数据

3

数据范围

对于 100% 的测试数据满足: A,B 的长度 <=10^6 , A,B 仅包含大小写字母。

code:

#include<iostream>
#include<string>
using namespace std;
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);string a,b;cin>>a>>b;int s=0;int t=a.find(b);while(t!=string::npos){s++;t=a.find(b,t+1);}cout<<s<<endl;return 0;
}

删除字符

题目描述

编写一个程序,先输入一个字符串 str(长度不超过20),再输入单独的一个字符 ch,然后程序会把字符串 str 当中出现的所有的 ch 字符都删掉,从而得到一个新的字符串 str2,然后把这个字符串打印出来。

输入格式

输入有两行,第一行是一个字符串(内部可能含空格),第二行是一个字符。

输出格式

经过处理以后的字符串。

样例

输入数据

123-45-678
-

输出数据

12345678

code:

#include<iostream>
#include<string>
using namespace std;
int main(){string str;char ch;getline(cin,str);cin>>ch;//ch为字符不可以用getline来读入,getline与cin混用错误原因是cin 会剩一个换行符, getline 会把这个换行符读进来导致直接结束字符串读入。因此可以先使用getline来读入后用cin来读入int p=str.find(ch);while(p!=string::npos){str.erase(p,1);p=str.find(ch);}cout<<str<<endl;return 0;
}

替换单词

题目背景

最近,谷歌公司做出了一项决定,由于black list(黑名单)这个词语不好听,所以需要将它们修改成block list(屏蔽名单)。

题目描述

给定一个仅仅由小写字母组成的字符串s,请将其中所有的black全部替换成block。

输入格式

单个字符串:表示需要替换的字符串s。

输出格式

单个字符串:表示将black替换成block后的字符串。

样例

输入数据

ablacklistblackmatter

输出数据

ablocklistblockmatter

数据范围

设字符串的长度为|s|,则
对于50%的数据,1<|s|<200;
对于100%的数据,1<|s|<200000.

code:

#include<iostream>
#include<string>
using namespace std;
int main(){string s,w,t;cin>>s;w="black";t="block";int p=s.find(w);while(p!=string::npos){s.replace(p,5,t);p=s.find(w);}cout<<s<<endl;return 0;
}

stringstream

头文件:sstream
stringstream主要是用在字符串分割,可以先用clear()以及str()将字符串读入并进行分割,再用>>把内容输出。

#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main(){string s;stringstream ss;int a,b,c;getline(cin,s);ss.clear();ss.str(s);ss>>a>>b>>c;return 0;
}

stringstream详解:

stringstream是C++ 提供的专门用于处理字符串的输入输出流类。

stringstream的用法:

1、构造函数:
stringstream 的构造函数有很多,这里列举最为常用的两个构造函数:

<1>、创建一个对象,向对象输入字符串:

    // 创建一个 string类  对象 sstring s("hello stringstream");// 创建一个 stringstraeam类 对象 ssstringstream ss;// 向对象输入字符串 : "<<" 表示向一个对象中输入ss << s;cout << ss.str() << endl;

<2>、在创建对象的时候使用字符串初始化:

    // 创建一个 stringstraeam类 对象 ssstringstream ss("hello stringstream");cout << ss.str() << endl;

两种方式都可以创建对象,但创建后的对象用法不一样,详见后面的示例。
2、输出字符串
stringstream 可以将存储于内部的字符串输出,需要调用 str() 函数,不可直接输出:

std::cout << ss.str() << std::endl;
// std::cout << ss << std::endl; 		// 错误不可直接输出

注意:cout << ss << endl; 是错误的,不可以直接输出
3、两种构造函数带来的不同
上面阐述了两种构造函数,利用不同的构造函数创建对象,对象具体的操作也不同:
<1>、 第一种构造方式

#include <iostream>
#include <sstream>
using namespace std;int main()
{stringstream ss1;ss1 << "fre";ss1 << "gre";cout << ss1.str() << endl;return 0;
}/*
输出:
fregre
*/

可以发现,两个字符串直接拼接在了一起
<2>、第二种构造方式

#include <iostream>
#include <sstream>
using namespace std;
int main()
{string str("asd");// 第二种构造stringstream ss2(str);cout << ss2.str() << endl;// 第一种构造ss2 << "r";cout << ss2.str() << endl;ss2 << "13";cout << ss2.str() << endl;ss2 << "hy";cout << ss2.str() << endl;return 0;
}
/*
输出:
asd
rsd
r13
r13hy
*/

可以发现,利用第一种构造函数创建对象时,输入字符串后直接进行字符串拼接,而第二种构造方式,在进行字符串拼接时,首先把原本的字符串覆盖掉,之后再进行拼接。
<3>、 如果不想原来的字符串被覆盖,则需要换一种构造方式,如下:

#include <iostream>
#include <sstream>
using namespace std;
int main()
{ostringstream ss("1 2 3 4 ", std::ios_base::ate);	// append 方式追加cout << ss.str() << endl;ss << "5 3 4";cout << ss.str() << endl;return 0;
}
/*
输出:
1 2 3 4 
1 2 3 4 5 3 4
*/

4、修改、清空 stringstream 内容
stringstream 的内容可以通过 str() 函数进行修改、清空:

#include <iostream>
#include <sstream>
using namespace std;
int main()
{stringstream ss("hello string");cout << ss.str() << endl;// 修改内容ss.str("hello stringstream");cout << ss.str() << endl;// 清空内容ss.str("");cout << ss.str() << endl;return 0;
}
/*
输出:
fghewoo
123456
*/

srtingstream练习

题目描述

输入的第一行有一个数字 N 代表接下來有 N 行数字,每一行有若干个的整数(最多 20 个,每行最多 200个字符),请你输出每一行数字的和。

输入格式

第一行一个整数 N。
接下来输入 N 行,每行若干个整数。

输出格式

输出N行,每行一个整数表示。

样例

输入数据

3
1 2 3
20 17 23 54 77 60
111 222 333 444 555 666 777 888 999

输出数据

6
251
4995

code:

#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main(){string s;stringstream ss;int n,sum,i,a;cin>>n;getline(cin,s);for(int i=1;i<=n;i++){getline(cin,s);ss.clear();ss.str(s);sum=0;while(1){ss>>a;if(ss.fail()) break;sum+=a;}cout<<sum<<endl;}return 0;
}

sprintf

sprintf是一个比较冷门的函数,可以直接把相应的整数拼接组合成我们规定的格式。

sprintf详解

char str[80];
sprintf(str, "%c", 'A'); // 输出字符 A
sprintf(str, "%d", 123); // 输出十进制整数 123
sprintf(str, "%x", 255); // 输出十六进制整数 ff
sprintf(str, "%f", 3.14); // 输出浮点数 3.140000
sprintf(str, "%s", "Hello"); // 输出字符串 Hello
sprintf(str, "%10d", 123); // 输出宽度为 10 的十进制整数,右对齐,空位用空格填充:       123
sprintf(str, "%-10d", 123); // 输出宽度为 10 的十进制整数,左对齐,空位用空格填充:123       
sprintf(str, "%010d", 123); // 输出宽度为 10 的十进制整数,右对齐,空位用 0 填充:0000000123
sprintf(str, "%+d", 123); // 输出带正负号的十进制整数:+123
sprintf(str, "%.3d", 123); // 输出至少 3 位的十进制整数,不足则用 0 填充:123
sprintf(str, "%.3d", 12); // 输出至少 3 位的十进制整数,不足则用 0 填充:012
sprintf(str, "%.3f", 3.14); // 输出保留 3 位小数的浮点数:3.140
sprintf(str, "%.3s", "Hello"); // 输出最多 3 个字符的字符串:Hel
sprintf(str, "%ld", 123456789L); // 输出长整型数:123456789
sprintf(str, "%lf", 3.1415926535897932384626433832795L); // 输出长双精度型数:3.141593

sprintf练习

顺子日期

小明特别喜欢顺子。顺子指的就是连续的三个数字:123、456 等。顺子日期指的就是在日期的 уyyymmdd 表示法中,存在任意连续的三位数是一个顺子的日期。例如 20220123 就是一个顺子日期,因为它出现了一个顺子:123; 而 20221023 则不是一个顺子日期,它一个顺子也没有。小明想知道在整个 2022 年份中,一共有多少个顺子日期。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

code:

#include<iostream>
char ch[15];
using namespace std;
int main(){int cnt=0,flag=0,ans=0;for(int year=2022;year<=2022;year++)for(int month=1;month<=12;month++)for(int day=1;day<=31;day++){if(month==1||month==3||month==5||month==7||month==8||month==10||month==12);else if(month==2){if(year%4==0&&year%100!=0||year%400==0){if(day>29) break;}else{if(day>28) break;}}else{if(day>30) break;}sprintf(ch+1,"%d%02d%02d",year,month,day);//转换格式for(int k=4;k+2<=8;k++){//k+2<=8处理边界if(ch[k+2]-ch[k+1]==1&&ch[k+1]-ch[k]==1){puts(ch+1);ans++;break;}}}cout<<ans;return 0;
}

回文日期

题目描述

2020 年春节期间,有一个特殊的日期引起了大家的注意:2020 年 2 月 2 日。因为如果将这个日期按“yyyymmdd” 的格式写成一个 8 位数是 20200202, 恰好是一个回文数。我们称这样的日期是回文日期。有人表示20200202是“千年一遇” 的特殊日子。对此小明很不认同,因为不到 2 年之后就是下一个回文日期:20211202即 2021 年 12 月 2 日。也有人表示20200202并不仅仅是一个回文日期,还是一个ABABBABA型的回文日期。对此小明也不认同,因为大约 100 年后就能遇到下一个ABABBABA型的回文日期:21211212 即 2121 年 12 月 12 日。算不上“千年一遇”,顶多算“千年两遇”。给定一个 8 位数的日期,请你计算该日期之后下一个回文日期和下一个ABABBABA型的回文日期各是哪一天。

输入格式

输入包含一个八位整数 N,表示日期。

输出格式

输出两行,每行 1 个八位数。
第一行表示下一个回文日期,第二行表示下一个ABABBABA型的回文日期。

样例

输入数据

20200202

输出数据

20211202
21211212

数据范围

对于所有评测用例,10000101≤N≤89991231,保证 N 是一个合法日期的 8 位数表示。

code:

#include<iostream>
#include<string>
using namespace std;
int n;
char ch[15];
int flag=0,flag1=0;
bool check1(string s){for(int i=0,j=7;i<j;i++,j--){if(s[i]!=s[j]) return false;}return true;
}
bool check2(string s){if(check1(s)){if(s[0]!=s[2]||s[1]!=s[3]||s[0]==s[1]) return false;return true;}return false;
}
int main(){cin>>n;int year1=n/10000;int month1=n%10000/100;int day1=n%100;for(int year=1000;year<=100000;year++)//题目中给的只是n的范围,并不是最后答案的范围,所以year要开的足够大for(int month=1;month<=12;month++)for(int day=1;day<=31;day++){if(month==1||month==3||month==5||month==7||month==8||month==10||month==12);else if(month==2){if((year%4==0&&year%100!=0)||year%400==0){if(day>29) break;}else{if(day>28) break;}}else{if(day>30) break;}if(flag1==1){sprintf(ch+1,"%04d%02d%02d",year,month,day);string s;for(int i=1;i<=8;i++){s+=ch[i];}if(!flag){if(check1(s)){cout<<s<<endl;flag=1;}}if(check2(s)){cout<<s<<endl;return 0;}}if(year==year1&&month==month1&&day==day1){flag1=1;}//标记在后面防止遍历到当前日期}return 0;
}

日期统计:

题目描述:

小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。数组中的元素从左至右如下所示:

5 6 8 6 9 1 6 1 2 4 9 1 9 8 2 3 6 4 7 7 5 9 5 0 3 8 7 5 8 1 5 8 6 1 8 3 0 3 7 9 2
7 0 5 8 8 5 7 0 9 9 1 9 4 4 6 8 6 3 3 8 5 1 6 3 4 6 7 0 7 8 2 7 6 8 9 5 6 5 6 1 4 0 1
0 0 9 4 8 0 9 1 2 8 5 0 2 5 3 3

现在他想要从这个数组中寻找一些满足以下条件的子序列:
1、子序列的长度为 8;
2、这个子序列可以按照下标顺序组成一个 yyyymmdd 格式的日期,并且要求这个日期是 2023 年中的某一天的日期,例如 20230902,20231223。yyyy 表示年份,mm 表示月份,dd 表示天数,当月份或者天数的长度只有一位时需要一个前导零补充。
请你帮小蓝计算下按上述条件一共能找到多少个不同的 2023 年的日期。
对于相同的日期你只需要统计一次即可。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

code:

#include<iostream>
using namespace std;
int a[110];
int main(){for(int i=1;i<=100;i++){cin>>a[i];}char s[15];int cnt=0,flag=0;for(int year=2023;year<=2023;year++)for(int month=1;month<=12;month++)for(int day=1;day<=31;day++){if(month==1||month==3||month==5||month==7||month==8||month==10||month==12);else if(month==2){if(year%4==0&&year%100!=0||year%400==0){if(day>29) break;}else{if(day>28) break;}}else{if(day>30) break;}sprintf(s,"%04d%02d%02d",year,month,day);int m=0;for(int n=1;n<=100;n++){if(a[n]==(s[m]-'0')){m++;if(m==8) break;}}if(m==8) flag=1;if(flag==1){cnt++;flag=0;}}cout<<cnt<<endl;return 0;
}

这篇关于冲刺蓝桥杯第三章字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119785

相关文章

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

C和指针:字符串

字符串、字符和字节 字符串基础 字符串就是一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾。 字符串长度就是字符串中字符数。 size_t strlen( char const *string ); string为指针常量(const修饰string),指向的string是常量不能修改。size_t是无符号数,定义在stddef.h。 #include <stddef.h>

PHP字符串全排列

方法一: $str = 'abc';$a =str_split($str);perm($a, 0, count($a)-1);function perm(&$ar, $k, $m) {if($k == $m){ echo join('',$ar), PHP_EOL;}else {for($i=$k; $i<=$m; $i++) {swap($ar[$k], $ar[$i]);perm($ar

PHP7扩展开发之字符串处理

前言 这次,我们来看看字符串在PHP扩展里面如何处理。 示例代码如下: <?phpfunction str_concat($prefix, $string) {$len = strlen($prefix);$substr = substr($string, 0, $len);if ($substr != $prefix) {return $prefix." ".$string;} else

C语言蓝桥杯

一、语言基础 竞赛常用库函数 最值查询 min_element和max_element在vector(迭代器的使用) nth_element函数的使用 例题lanqiao OJ 497成绩分析 第一种用min_element和max_element函数的写法 第二种用min和max的写法 二分查找 二分查找只能对数组操作 binary_s

十一、C语言:字符串函数

目录 一、strlen 二、strcpy 三、strcat  四、strcmp 五、strstr 六、strtok 七、strerror 一、strlen 注意:strlen()函数的返回值是size_t,两个size_t相减仍为无符号数 int main(){char arr[10] = "abc";char brr[10] = "abc123";if (strl

NC 把数字翻译成字符串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, … , ‘z->26’。 现在给一串数字,返回有多少种可能的译码结果 import java.u

C语言进阶【1】--字符函数和字符串函数【1】

本章概述 字符分类函数字符转换函数strlen的使用和模拟实现strcpy的使用和模拟实现strcat的使用和模拟实现strcmp的使用和模拟实现彩蛋时刻!!! 字符分类函数 字符: 这个概念,我们在以前的文章中讲过了。我们键盘输入的信息都是字符。字符大体可以分为两类——单个字符,字符串。而单个字符又可以进行分类——字母字符,数字字符,特殊字符和不可见字符。进行思维图展示: 在日

nyoj 685 查找字符串

当初一开始没做出来。 后来,学习过一段时间之后,在返回来做这道题,忽然发现,map类容器可以做。 PS:需要注意的是:此题如果用c++的输入输出的话,会超时。 O(time):gets()<  scanf() < cin。   附上代码: #include<stdio.h>#include<map>#include<string>#include<string.h>usin