Open zw398430866 opened 4 years ago
#include <algorithm>
string first = "abcdefg";
string second(first);
std::transform(first.begin(), first.end(), second.begin(), ::toupper); // second=ABCDEFG
3 string的常用用法。 1)翻转,reverse
string str = "abcdefg";
reverse(str.begin(), str.end());
2)删除字符
//删除单个元素
str.erase(iter);//删除迭代器iter指定的元素
//删除区间元素
str.erase(first_iter, last_iter)//删除迭代器[first,second)之间的元素
str.erase(pos,length)//删除下标pos开始的长度为length的区间元素
string str = "abcdefg";
str.erase(str.begin());
3)查找某字符 find (逆序查找是rfind)
string str = "abcdefg";
string::iterator itr;
itr = find(str.begin(), str.end(), '1'); //输出对应的迭代指针位置
bool isEnd = (itr == str.end());
string str1 = "abc";
cout<<str.find(str1)<<endl; //输出2
4)距离函数 distance
string str = "abcdefg";
string::iterator itr;
itr = find(str.begin(), str.end(), 'g');
int dis = distance(str.begin(), itr);
5)插入字符串string.insert
string str = "abcdefg";
string addStr = "abc";
str.insert(3, addStr );
6)遍历
string str = "abcdefg";
for (auto ch:str){
cout<<ch<<endl;
}
7)子字符串
string str = "abcdefg";
cout<<str.substr(1,3)<<endl;
8)排序
string s
sort(s.begin(), s.end()); 升序排列
sort(s.begin(), s.end(), greater<int>()); 降序排序
9)字符串插入 string str = "abc"; str.insert(0, "efg"); // 在位置0上插入字符串“efg”
vector的用法 -- vector创建2维当数组使用
vector<vector<int>> matrix;//假设这是一个4*3的矩阵
int row=4,col=3;
matrix.resize(row);
for(int i=0;i<matrix.size();i++)
matrix[i].resize(col);
//接下来就可以用下标运算访问了
matrix[1][2]=233;
matrix[0][0]=422;
map的用法 -- map或者unordered_map当数组使用
map<int, map<int, string>> mp;
mp[1][-1] = "abc";
mp[2][0] = "ccc";
map<string, int> mp2;
mp2["111"] = 2;
前序,中左右 中序,左中右 后续,左右中 理解的时候,把中放在对应的位置即可。
sort自定义排序,可以自己写一个比较函数,在sort中调用
static bool lessValue(const Solution &slu1, const Solution &slu2)
{
return slu1.value < slu2.value;
}
sort(vecSlu.begin(), vecSlu.end(), lessValue);
bool operator< (const Solution &slu1, const Solution &slu2)
{
return slu1.value < slu2.value;
}
sort(vecSlu.begin(), vecSlu.end());
反转每对括号间的子串:按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串 本题自己再解的时候,用了递归的思路,翻转最外层的需要翻转次外层的,一层层的,先翻转最里面。然后遍历所有的最外层,实现起来比较麻烦。 后来讨论的时候,发现别人用的栈,先进后出的方式来实现,遇到反括号)就弹出直到(,这个思路就很清晰,做一下。 例:输入a(bcdefghijkl(mno)p)q,返回apmnolkjihgfedcbq
islower 判断小写字母, isupper 判断大写字母 ,isalpha 判断是否为字母