刷题中碰到的知识点

记录一下刷题中遇到的知识点; 1、(断言)assert 在程序设计中,断言(assertion)是一种放在程序中的一阶逻辑(如一个结果为真或是假的逻辑判断式),目的是为了标示与验证程序开发者预期的结果-当程序执行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止执行,并给出错误消息。

August 8, 2022 · 1 min · Rancho

力扣刷题记录

记录自己刷算法题中遇到的问题和自己的思路; 1、无重复长度的最长子串: 题目描述: 提示: 0 <= s.length <= 5 * 104; s` 由英文字母、数字、符号和空格组成; 思路: 就是做两个标志位,表示当前字符串的起始位置和正在比较的字符位置; 遍历整个字符串; 从起始标志位开始,到结束位置,依次比对是否有重复字符; 如果无,就结束位置加加; 如果有,就计算长度,并移动起始位置到重复字符的下一个位置; 然后一直循环; 要特别考虑: au abb bba 这些特殊排序的字符串; 是因为最后一个没有办法比较; 题解代码: int lengthOfLongestSubstring(char *s) { int str_length = strlen(s); int end_flag = 1, start_flag = 0, max_length = 1; char flag = 0; int i = 0; if (str_length == 0) { return 0; } while (*(s + end_flag) != '\0') { for (i = start_flag; i max_length) { max_length = end_flag - start_flag; } flag = 1; break; } if (i == str_length - 2) { if ((*(s + end_flag + 1) == '\0')) { if (end_flag - start_flag + 1 > max_length) { max_length = end_flag - start_flag + 1; } } } } if (flag == 1) { flag = 0; start_flag = i + 1; } else { end_flag++; } } return max_length; 改进: //方法2 int lengthOfLongestSubstring(char * s){ int str_length=strlen(s); int end_flag=1,start_flag=0,max_length=1; char flag=0; int i=0; if(str_length==0) { return 0; } while(*(s+end_flag)!='\0') { for(i=start_flag;imax_length) { max_length=end_flag-start_flag; } flag=0; start_flag=i+1; } else { if(end_flag-start_flag+1>max_length) { max_length=end_flag-start_flag+1; } end_flag++; } } return max_length; } 2、括号匹配 ...

July 17, 2022 · 2 min · Rancho