目录
一.双指针
(1)反转字符串中的字符
分析:
因为cin遇到第一个空格就停止输入
1.
cin.getline():
cin.getline()函数是C++中的一个函数,用于从标准输入(cin)中读取一行文本并存储在指定的字符串变量中。它属于istream类,需要在cin对象上调用。cin.getline()函数会一次读取多个字符(包括空白字符),直到读满N-1个字符或遇到指定的结束符为止。如果不指定结束符,则默认结束符为换行符,此函数并不保留结束符,而是用空字符替换结束符。
cin.getline()函数的特点包括:
- 能够读取空格字符,如果输入的字符中存在空格,则空格之后的数据也会被读取。
- 可以自定义结束符,但如果不指定结束符,则默认结束符为换行符。
- 读取的字符串存储在字符数组中,而不是存储在字符串对象中。
cin.getline()与cin.get()的区别在于对换行符的处理。cin.getline()在遇到换行符时,会将换行符从输入队列中提取并抛弃,而cin.get()函数不再提取并抛弃换行符,仍将其留在输入队列中。因此,在使用cin.get()之后,需要紧接着使用cin.get()来提取换行符,否则可能会导致cin.getline()无法正确读取输入。
参数:cin.getline( 字符指针(char*) , 字符个数N(int) , 结束符(char) );
2.若为string类则用getline(cin,s,'\n');
(2)等腰三角形【算法赛】
分析:
1.由三角形两边之和大于第三边,所以只用判断等腰三角形的两个腰是否大于底边。
2.将腰和边都排序,因为题目只要求求最多组成个数,所以用最小的腰与最小匹配的底边即可。
二.滑动窗口
模板:在0/1数组统计和大于2的连续子串个数
(1)挑选子串
分析:
1.将符合条件的数转化为1,否则0。通过滑动窗口统计子串个数。
(2)最长子串
分析:
1.(13-26)通过hash计数器作为元素存在个数的限制条件。每次将hash[a[j]]++,然后记录子串的长度,不断更新长度为最大值。如果>k,则为以该字符开头的最长子串。然后将i++,即头字符改变,循环到<=k。只有j++,ret才可能变化。