分析:
先牢记两点,模式串中,‘ . ’表示任意一个字符;‘ * ’表示它前面出现的字符可以出现任意次(含0次)
接着,设字符串为str,模式串为pattern,那么,
首先,如果模式串的下一个字符为‘ * ’:
- 如果当前字符匹配,那么有三种情况需要考虑——
(1)模式串当前字符出现0次,则str->str[i], pattern[j]->pattern[j+2];
(2)模式串当前字符出现1次,则str->str[i+1], pattern[j]->pattern[j+2];
(3)模式串当前字符出现2次及以上,则str[i]->str[i+1], pattern[j]->pattern[j]; - 如果当前字符不匹配,则只能让‘ * ’表示当前字符出现0次,即str[i]->str[i], pattern[j]->pattern[j+2];
其次,如果模式串下一个字符不为‘ * ’——
如果当前字符匹配,则str = str+1, pattern = pattern+1
分析
在数值之前可能有一个表示正负的’-‘或者’+’。
接下来是若干个0到9的数位表示数值的整数部分(在某些小数里可能没有数值的整数部分)。
如果数值是一个小数,那么在小数点后面可能会有若干个0到9的数位表示数值的小数部分。
如果数值用科学计数法表示,接下来是一个’e’或者‘E’,以及紧跟着的一个整数(可以有正负号)表示指数。
分析
1,去重,首先考虑的就是哈希表了
2,键值(Key)是字符的ASCII值,Value是表述了字符出现的早晚和是否重复
3,要求的是第一个不重复字符,我们就用Key=-1去重,接着用Key++来区分字符出现的早晚程度。
替换空格
思路很简单,详情见代码