PAT B1009 说反话

前言

传送门

正文

思路

两种方法,推荐能够自行写出split函数的模板

1)find函数

函数原型:size_t find(const string& str, size_t pos = 0) const;

功能说明:从pos位置开始查找子字符串str第一次出现的位置

参数说明:str为要查找的子字符串,pos从为初始查找位置

返回值:找到的话返回子字符串第一次出现的位置,否则返回string::npos

2)substr函数

函数原型:string substr(size_t pos = 0, size_t n = npos) const;

功能说明:获取从指定的起始位置开始,长度为n的子字符串

参数说明:pos为起始位置,n获取的1字符串长度

返回值:子字符串

参考题解一

#include<iostream>
#include<cstdio>
#include<string> 
using namespace std;
/*
因为PAT是单点测试,故出现下面这种简单的解法,这里需要注意的是在控制台黑框
中手动输入时,系统并不知道什么时候到达了所谓的“文件末尾”,因此需要按<Ctrl+Z>
组合键再按<Enter>键的方式来告诉系统已经到了EOF,这样系统才会结束while
*/
int main(){
	string str,res[80];
	int num=0;
	while(cin>>str){
		res[num++]=str;
	}
	for(int i=num-1;i>=0;i--){
		cout<<res[i];
		if(i!=0)cout<<" ";
	}
	cout<<endl;
} 

参考题解二

#include<iostream>
#include<vector> 
#include<string> 
using namespace std;
/*
很容易想到使用空格分割字符串存放至数组中,
然后再逆序输出该数组内容即可,不过问题在于
C/C++中没有split函数可以直接对字符串进行分割,
因此我们需要自己实现一个split函数,可以利用
STL库中string的find函数和substr函数来实现。
除此之外,因为scanf和cin在读取字符串时,空格和
换行都会停止字符串的读入,所以需要使用string头文件
中的getline(cin,str)函数来读入一行数据 。
*/
vector<string> split(const string& str,const string& delim){
	vector<string> res;
	string ss=str+delim;//扩展字符串,方便检索出最后一个分割出的字符串 
	int pos;
	int len=ss.size();
	for(int i=0;i<len;i++){
		pos=ss.find(delim,i);//pos为分割符第一次出现的位置,从i到pos之间的字符串就是分割出来的字符串 
		if(pos!=string::npos){//找到了分隔符的位置 
			string temp=ss.substr(i,pos-i);//获取从i开始,长度为pos-i的子字符串
			res.push_back(temp);
			i=pos+delim.size()-1;//更新i 
		} 
	} 
	return res;	
}
int main(){
	string str;
	int num=0;
	getline(cin,str);
	vector<string> res=split(str," ");
	for(int i=res.size()-1;i>=0;i--){
		cout<<res[i];
		if(i!=0)cout<<" ";
	}
	cout<<endl;
} 
全部评论

相关推荐

不愿透露姓名的神秘牛友
04-30 17:45
本人简历上&nbsp;1&nbsp;个&nbsp;RAG&nbsp;项目&nbsp;+&nbsp;1&nbsp;个&nbsp;Agent&nbsp;demo;这次面的是AI岗一面前我以为:背完八股&nbsp;+&nbsp;把项目讲清楚,应该能稳过。0-5&nbsp;min:自我介绍&nbsp;+&nbsp;项目背景-&nbsp;顺利。讲清楚了我的&nbsp;RAG&nbsp;是给法律咨询场景做的,痛点是大模型不懂行业术语。5-20&nbsp;min:项目深挖(开始崩)-&nbsp;Q1:你的法律文档总共多少?切了多少个&nbsp;chunk?-&nbsp;我:约&nbsp;500&nbsp;份&nbsp;PDF,5&nbsp;万个&nbsp;chunk-&nbsp;Q2:500&nbsp;份&nbsp;PDF&nbsp;加起来才&nbsp;5&nbsp;万&nbsp;chunk?平均每份&nbsp;100&nbsp;个&nbsp;chunk,你切片粒度是多少?-&nbsp;我:512&nbsp;token-&nbsp;Q3:法律文档里"第三条第二款"和"第三条之二"是不同含义,你的切片会不会把它切散?-&nbsp;我:(沉默&nbsp;5&nbsp;秒)……应该会-&nbsp;Q4:那你怎么解决?-&nbsp;我:我可以加一个&nbsp;metadata……(开始编)❌&nbsp;第一次崩:切片粒度没考虑业务语义。20-35&nbsp;min:评测体系(继续崩)-&nbsp;Q:你怎么知道你的&nbsp;RAG&nbsp;有效?-&nbsp;我:我用&nbsp;Recall@5……-&nbsp;Q:评测集多少条?怎么构造的?-&nbsp;我:100&nbsp;条,我手工标注的-&nbsp;Q:100&nbsp;条够吗?分布怎么样?-&nbsp;我:分布……我没分-&nbsp;Q:那你的&nbsp;Recall@5&nbsp;是&nbsp;0.81,你怎么知道这个数字是好是坏?baseline&nbsp;是什么?-&nbsp;我:(沉默&nbsp;10&nbsp;秒)❌&nbsp;第二次崩:没有&nbsp;baseline,没分布分析,纯靠"看起来还行"。35-55&nbsp;min:Agent&nbsp;部分(彻底崩)-&nbsp;Q:你的&nbsp;Agent&nbsp;demo&nbsp;用了几个工具?-&nbsp;我:3&nbsp;个,搜索、计算器、文档查询-&nbsp;Q:当用户问一个问题,你的&nbsp;Agent&nbsp;怎么决定调哪个工具?-&nbsp;我:用&nbsp;ReAct,让模型自己决定-&nbsp;Q:模型决策错了怎么办?-&nbsp;我:我加了个&nbsp;reflection……-&nbsp;Q:reflection&nbsp;失败&nbsp;3&nbsp;次后怎么处理?-&nbsp;我:(沉默&nbsp;15&nbsp;秒)……我没想过❌&nbsp;第三次崩:异常路径完全没设计。55-65&nbsp;min:业务理解&nbsp;+&nbsp;反问-&nbsp;Q:你觉得字节做&nbsp;AI&nbsp;应用最大的瓶颈是什么?-&nbsp;我:算力?数据?-&nbsp;Q:你看过哪些字节最近发的&nbsp;AI&nbsp;产品?-&nbsp;我:豆包、扣子……-&nbsp;Q:扣子是&nbsp;Agent&nbsp;平台还是工作流平台?-&nbsp;我:(再次沉默)❌&nbsp;第四次崩:对面试公司业务一无所知。
面试官拷打AI项目都会问...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务