GESP 四级冲刺训练营:字符串
一、基本常识
1. 功能函数
函数 | 格式 | 返回值 | 功能 |
---|---|---|---|
length |
s.length() |
字符串的长度 | 返回 s 的长度 |
find |
s1.find(s2, pos) |
第一个字符的下标或者 string::npos |
找到 s2 在 s1 中第一个字符的下标 |
insert |
s1.insert(pos, s2) |
无 | 在 s1 的 pos 下标位置前插入 s2 |
erase |
s.erase(pos, len) |
无 | 删除 s 的 pos 下标位置开始往后的 len 个字符 |
replace |
s1.replace(pos, len, s2) |
无 | 替换 s1 的 pos 下标位置开始往后的 len 个字符替换为 s2 |
tolower |
tolower(c) |
对应小写字符 | 将 c 变为对应的小写字符 |
toupper |
toupper(c) |
对应大写字符 | 将 c 变为对应的大写字符 |
substr |
s.substr(pos, len) |
截取的子字符串 | 截取 s1 的 pos 下标开始往后的 len 个字符为子字符串 |
reverse |
s.reverse(it1, it2) |
无 | 对 s 的 it1 到 it2 进行翻转 |
2. 注意事项
insert()
在下标之前做插入操作;tolower()
和toupper()
只能传入字符,不能传入字符串;reverse()
传入的两个参数是迭代器,不是下标;reverse()
使用前需要导入algorithm
头文件。
3. 输入输出
前情提要:请在所有操作之前确保导入 string
头文件。
3.1 输入
// 无空格输入
string s;
cin >> s;
// 有空格输入
string s;
getline(cin, s);
3.2 输出
cout << s;
二、字符串算法
1. 基础字符串
1.1 回文字符串
题目描述
输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。
输入格式
输入一行字符串,长度小于 100 100 100。
输出格式
如果字符串是回文,输出
yes
;否则,输出no
。
样例 #1
样例输入 #1
abcdedcba
样例输出 #1
yes
参考答案
方法①:函数求解
#include <iostream> #include <string> #include <algorithm> using namespace std; string s; string olds; int main() { cin >> s; olds = s; reverse(s.begin(), s.end()); if (olds == s) { cout << "yes"; } else { cout << "no"; } return 0; }
方法②:逻辑求解
#include <iostream> #include <string> using namespace std; string s; int len; int main() { cin >> s; len = s.length(); for (int i = 0; i <= len/2; i++) { if (s[i] != s[len-i-1]) { cout << "no"; return 0; } } cout << "yes"; return 0; }
1.2 亲朋字符串
题目描述
亲朋字符串定义如下:给定字符串 s s s 的第一个字符的 ASCII 值加第二个字符的 ASCII 值,得到第一个亲朋字符; s s s 的第二个字符加第三个字符得到第二个亲朋字符;依此类推。注意:亲朋字符串的最后一个字符由 s s s 的最后一个字符 ASCII 值加 s s s 的第一个字符的 ASCII 值。
输入格式
输入一行,一个长度大于等于 2 2 2,小于等于 100 100 100 的字符串。
输出格式
输出一行,为变换后的亲朋字符串。输入保证变换后的字符串只有一行。
样例 #1
样例输入 #1
1234
样例输出 #1
cege
参考答案
#include <iostream> #include <string> using namespace std; string s; int len; string news; int main() { cin >> s; len = s.length(); for (int i = 0; i < len; i++) { news += s[i]+s[(i+1)%len]; } cout << news; return 0; }
2. 尺取法求解
2.1 尺取法公式
尺取法一般的定义是:
l
: 左指针
r
: 右指针
s
: 字符串
n
: 字符串长度
while