[C++][题解]切蛋糕
2022/1/19 12:50:46
本文主要是介绍[C++][题解]切蛋糕,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目
题目描述
如果字符串中存在子串"cake"(小写字母),则称此串为蛋糕串。
给出n个字符串,如果所给的串为蛋糕串,则将蛋糕切除(即将"cake"删除)。将所有蛋糕串的剩余部分依次合并在一起,连成一个字符串并输出。
输入格式
第一行为一个正整数n(n ≤ 10000)。
接下来n行,每行为一个字符串(字符串长度≤10000)。字符串中可能包含空格。
输出格式
按要求输出一行字符串。
题解
#include<iostream> #include<cstdio> #include<string> using namespace std; int main(){ int n; string res(""),t; scanf("%d",&n);getchar(); for(int i = 0;i < n;i++){ getline(cin,t); auto idx = t.find("cake"); // 使用find函数查找"cake" if(idx == string::npos) continue; while(idx != string::npos){ t = t.substr(0,idx) + t.substr(idx + 4); idx = t.find("cake"); } res += t; } printf("%s",res.c_str()); return 0; }
第十行
getline(cin,t);
这一行将一行的数据读入到字符串t。
注:为什么不使用cin >> t;
而使用了getline
呢?
因为cin在遇到空格时会停止读入,使用cin无法读取到具有空格的一行字符串,所以是用了getline
。
使用方法为:
getline(cin,字符串对象);
第十一行
auto idx = t.find("cake");
find函数可用于查找子串,如果找到,返回匹配位置的首个元素的下标。
如果没找到,则返回string::npos(它是一个很大的数)。
auto
用于自动识别数据类型,在某些时候可以偷懒用。
详细请看:c++ auto关键字使用
第十四行
t = t.substr(0,idx) + t.substr(idx + 4);
substr函数用于截取子字符串。
它有两种形式,一种是
substr(子串的首元素下标,子串的长度); substr(子串的首元素下标); // 会将当前位置到末尾的子串截取出来
substr函数会将截取到的子串以函数返回值的形式返回出来。
使用+
号可以拼接两个字符串。
例如:
string a = "hello ",b = "world!"; string c = a + b;
那么c的值将为hello world!
。
综上所述,第14行便实现了从字符串t中截取出两个子串,并将子串合并后复制给t的操作。
原创不易,感谢支持。
这篇关于[C++][题解]切蛋糕的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-29易优CMS安装常见问题汇总-icode9专业技术文章分享
- 2024-06-28易优新手必读安装教程-icode9专业技术文章分享
- 2024-06-28忘记eyoucms后台密码怎么办?-icode9专业技术文章分享
- 2024-06-26终极指南:Scrum中如何设置需求优先级
- 2024-06-26AI大模型企业应用实战(25)-为Langchain Agent添加记忆功能
- 2024-06-26小白家庭 nas 搭建方案-icode9专业技术文章分享
- 2024-06-23AI大模型企业应用实战(14)-langchain的Embedding
- 2024-06-23AI大模型企业应用实战(15)-langchain核心组件
- 2024-06-23AI大模型企业应用实战(16)-langchain核心组件
- 2024-06-23AI 大模型企业应用实战(06)-初识LangChain