记录一下刷简单、中级的题;遇到一些难点都可以用C++ STL库来破解,或者暴力破解的;在1s 时间内,32M内存空间下,都可以通过;
1、字符串输入:string s;
输入是不能直接cin>>s; 否则如果字符串中有空格,只获取到空格前的部分;要使用 getline(cin,s) ,这样回车前的输入内容都能获取。
2、字符串 string s; 字符 char index ;
s.length() 返回字符串长度;
toupper(s[i]) 把如的字母转换成大写字母输出;如果不是字母,返回原字符; isalpha(index) 判断输入的字符 是不是字母,不是返回0;是返回非零。 s.erase(s.begin()+3); 删除迭代器所指向的元素;
s.begin() 返回字符串s的首位迭代器。
S1=s.substr(0,4);//注意是从第0个位置上长度为4的字符;如:substr(4,6) ,表示从下表位置4开始,长度为8的8个字符;而不是4-8之间的4个字符。
s1=s.substr(8) ,返回从第八个字符开始一直到结尾的字符串。
s.insert(int pos,char c) 在下标pos所指的位置,插入字符s ,也可以插入字符串
s.erase(int pos,int count) 删除下标pos开始后的count个元素;
s.find(‘c’) 查找某个字符,或字符串;若查找则返回下标数字;没找到的话会输string::npos,无穷大数字。
s.compare {pos,n, s2);s1.compare(s2) 若两个字符串相同,则函数返回 0;若字符串 S1 按字典顺序要先于 S2,则返回负值;反之,则返回正值。
3、对输入的浮点数向上取整或向下取整;向上+0.5;(int)(number+0.5);
向下-0.5;(int)(number-0.5)
4、C++ STL map 的使用;
定义一个map: map
查找元素:m.find(key) 返回的是迭代器,如果找不到,则返回的是 m.end()
插入元素:m.insert(pair
创建迭代器,遍历元素:map
5、C++ STL set 的使用;
set
s.begin() 返回set容器的第一个元素的地址
s.end() 返回set容器的最后一个元素地址
s.clear() 删除set容器中的所有的元素
s.empty() 判断set容器是否为空
s.find(a) 查找元素a ,如果a不存在,则返回 s.end() ,存在返回对应的迭代器。
s.max_size() 返回set容器可能包含的元素最大个数
s.size() / length() 返回当前set容器中的元素个数
s.erase(it) 删除迭代器指针it处元素
s.insert(a) 插入某个元素 ,set插入后如果根据迭代器取出元素,可能会出现插入和取出顺序不一致;可以用一个vector.push_back(key) 做记录,通过set[key]取出。
6、C++ STL stack 栈的使用:
stack
st.push(a) 往栈顶加入元素;
st.top() 获取栈顶元素;
st.pop() 删除栈顶元素。
7、C++ STL vector 数组的使用:
vector
vec.size() 返回容器中元素的个数;
vec.at(index) 返回索引下标index所指的数据;若index越界,抛出异常;
vec.front() 返回容器的第一个数据;
vec.back() 返回容器中最后一个数据元素;
vec.insert(iterator ,count,ele) 在迭代器所指的位置,插入count个ele元素;
vec.push_back(ele) 在末尾插入元素
vec.pop_back() 删除最后一个元素;
vec.erase(iterator) 删除迭代器所指向的元素
vector中的find 是使用算法库的find函数; find(begin,end,number); 找到则返回迭代器地址;否则返回end
8、排序和去重;
sort(a,a+n); //这里就是排序
int x=unique(a,a+n)-a; //返回不重复元素的最后一个元素的迭代器,减去初始迭代器,就是不重复元素个数;unique()算法有个特点要注意;它是是剔除重复的没错,可是他是剔除相邻之间字符重复的,str中的字符前后之间是没有重复的,所以unique函数是起不到作用的。如3、4、5、3、5 ;由于3和5 不相邻,所以不会被剔除;要先剔除先要sort一次。 9、最长回文子串的破解;先定义回文串的方法,是回文串,则返回 长度; 然后截取字符串,不断循环判断。 10、数字、字符、字母判断函数;这几个方法的参数都是 char c; 11、对输出的浮点数保留小数点后的位数: 13、解动态规划题的流程: 欢迎分享,转载请注明来源:内存溢出
stable_sort() ; 稳定排序,元素之间的相邻位置不变。
cout<
isalpha()函数用来判断一个字符是否为字母,如果是字母则返回1,否则返回0。
isalnum()函数用来判断一个字符是否为数字或字母,是则返回1,否则返回0。
islower()函数用来判断一个字符是否为小写字母;是则返回1,否则返回0;
ispuuer()函数用来判断一个字符是否为大写字母;是则返回1,否否则返回0;
int isdigit(char c),检查c是否为数字0到9。是则返回TRUE,否则返回NULL(0);
#include
cout.setf(ios::fixed);
cout<
next_permutation(begin,end) 是按照字典升序的方式生成的排列。
prev_permutation(begin,end) 降序的方式生成排列;参数begin 和end是迭代器。
设计状态
写出状态转移方程
设定初始状态
执行状态转移
返回最终的解
评论列表(0条)