刷题 LeetCode

刷题 LeetCode,第1张

        记录一下刷简单、中级的题;遇到一些难点都可以用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;
        查找元素:m.find(key)  返回的是迭代器,如果找不到,则返回的是 m.end()
        插入元素:m.insert(pair(key,value))
        创建迭代器,遍历元素:map::iterator iter = m.begin(); iter->first 、iter->second; first指key,second指value;

5、C++ STL set 的使用;
set s 定义一个保存整数的 集合。
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  创建一个整数的栈;
st.push(a) 往栈顶加入元素;
st.top() 获取栈顶元素;
st.pop() 删除栈顶元素。

7、C++ STL vector 数组的使用:
vector vec;  创建一个数组;
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一次。
stable_sort() ; 稳定排序,元素之间的相邻位置不变。
cout<

9、最长回文子串的破解;先定义回文串的方法,是回文串,则返回 长度; 然后截取字符串,不断循环判断。

10、数字、字符、字母判断函数;这几个方法的参数都是 char c;
isalpha()函数用来判断一个字符是否为字母,如果是字母则返回1,否则返回0。
isalnum()函数用来判断一个字符是否为数字或字母,是则返回1,否则返回0。
islower()函数用来判断一个字符是否为小写字母;是则返回1,否则返回0;
ispuuer()函数用来判断一个字符是否为大写字母;是则返回1,否否则返回0;
int isdigit(char c),检查c是否为数字0到9。是则返回TRUE,否则返回NULL(0);

11、对输出的浮点数保留小数点后的位数:
#include  // 引入头文件 ;
cout.setf(ios::fixed);
cout< cout<12、排列组合
next_permutation(begin,end)  是按照字典升序的方式生成的排列。
prev_permutation(begin,end)  降序的方式生成排列;参数begin 和end是迭代器。

13、解动态规划题的流程:
设计状态
写出状态转移方程
设定初始状态
执行状态转移
返回最终的解

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1499297.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-25
下一篇 2022-06-25

发表评论

登录后才能评论

评论列表(0条)

保存