20241213-C09-字符串运用练习
原题链接:33673.徐沐瑶专属笔记C++2024-12-13 21:10:09
发布于:江苏
一、课前练习(部分)
A317.字母统计
给出一个仅包含小写字母的字符串,长度<=100。请统计其中出现次数最多的字母。
分析: 桶思想, 字符本质上还是ascii码, 可以用作下标,详见下图:
参考程序:
int b[150] = {};
string s;
cin >> s;
int len = s.size();
for (int i=0; i<len; i++){
b[ s[i] ]++; //统计每个字符出现的次数
}
char ch = 'a'; // 假设'a'出现的次数最多, 打擂台比较最大值
for(char i='a'; i<='z'; i++){
if (b[i] > b[ch] ){
ch = i; //更新擂主
}
}
cout <<ch;
二、srting的常用方法(function)
1. s.size()/s.length()
获取实际长度
2. (int)a.find(b)
a.find(b, pos) 在a串中从pos的位置开始往后找字符串b, 找不到返回-1,第2个参数可以不写
string s = "babcdefg", t = "abc";
cout << (int)s.find(t, 0) << endl; //string::npos 注意转成-1需要使用(int)进行强制类型转换
3. s.insert()
insert(pos, string)下标为pos的位置前 插入 s
string s = "xmw", t = "666";
s.insert(3, t);
cout << s; //xmw666
4. s.substr(3, 5) 截取
substr(pos, len); 从pos(包含)的位置开始往后截取len个字符长度
string s;
int a, b;
cin >> s >> a >> b;
cout << s.substr(a-1, b-a+1);
5. s.erase(0, 3);
erase(pos, len); 从pos(包含)的位置开始往后擦除len个字符长度
string s = "xmw666";
s.erase(2, 3); //pos, len
cout << s ;
6. s.replace(0, 1, a);
replace(pos, len, string); 替换, 删除len个长度再插入 string 插入pos之前
string s = "xmw666";
// s.replace(2,0,"XMW"); //xmXMWw666
s.replace(2,2,"XMW"); //xmXMW66
7. s.empty()
空串: 只包含'\0'的串
string s = "";
cout << s.empty(); //1
8. s.clear()//清除 变成空串
string s = "";
cout << s.empty() << endl; //1
s += "xmw";
cout << s.empty() << endl; //0
s.clear();
cout << s.empty() << endl; //1
9. reverse(s.begin(), s.end())
翻转函数,需要头文件algorithm头文件
string s;
cin >> s;
string t = s;
reverse(s.begin(), s.end()); //反转函数
if (s == t) cout << "Yes";
else cout << "No";
抽象的练习:
A31054.【字符串】【入门】输出亲朋字符串
思路就是这个思路:
代码:
string s;
cin >> s;
int len = s.size();
char t = s[0]; //提前拿出来第1个字符,防止覆盖
for (int i=0; i<=len-2; i++){
s[i] += s[i+1];
}
s[len-1] += t; //处理最后一个字符
cout << s;
A20998.小书童——凯撒密码
分为两部分进行处理。
#include <iostream>
using namespace std;
int main()
{
int n;
string s;
cin>>n>>s;
for(int i=0; i<=s.size()-1; i++)
{
if(s[i]>='a'&&s[i]<='z'-n){ //直接移动
s[i]+=n;
}
else if(s[i]>'z'-n&&s[i]<='z'){
s[i] = s[i]+n-26; //先往后移动 再 -26
}
}
cout<<s;
return 0;
}
这里空空如也
有帮助,赞一个