主要由最近刷L1和L2的天梯赛往年真题得出的小技巧汇总。
1.输入包含空格的字符串:
string a;
getline(cin,a); //这种方法可以录入空格
2.类型转换:(可以通过sscanf,sprintf转换)
char->int: -'0' int->char: +'0';
string->int:int stoi(string str) int->string: string to_string(int i) 同理有stof,atoi(char*->int)
3.find函数用法不要混淆
string str; // string类成员函数:未找到返回string::npos
if (str.find("substr") != string::npos);
set<int> st;
if (st.find(0) != st.end()); //set、map成员函数:未找到返回尾迭代器
vector<int> vc;
if(find(vc.begin(), vc.end(), 0)!=vc.end()); //序列式容器可以通过algorithm库中find函数查找,未找到返回尾迭代器
4.string类的insert()操作
1)string &insert(int p0, const char *s)
功能:在原字符串下标为pos的字符前插入字符串str
返回值:插入字符串后的结果。
(2)string &insert(int p0, const char *s, int n);
功能:在p0位置插入字符串s的前n个字符
返回值:插入字符串后的结果。
5.%02d处理前导0
printf("%03d",a);
占三位,从左往右补0,如果a=34,则输出034,如果a=4,则输出004。
6.不要无脑开long long,很费空间,要去分析数据规模。有时候用int可以AC,用long long直接超时了