替换空格
题目描述
请实现一个函数,将一个字符串中的空格替换成 “%20”。例如,当字符串为 We Are Happy. 则经过替换之后的字符串为 We%20Are%20Happy。
- 时间限制:1 秒
- 空间限制:32768K
代码
1 | /** |
《剑指Offer》版本-题目
剑指Offer书本中的题目要求入参格式不一样,因此实现方法也不一样。
1 | void ReplaceBlank(char string[], int length){ |
就需要从后往前,逐字节移动替换字符。
《剑指Offer》-代码
1 | public class Solution { |
正则表达式匹配
题目描述
请实现一个函数用来匹配包括’.’和’*‘的正则表达式。模式中的字符’.’表示任意一个字符,而’*‘表示它前面的字符可以出现任意次(包含 0 次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串 “aaa” 与模式 “a.a” 和 “ab*ac*a” 匹配,但是与 “aa.a” 和 “ab*a” 均不匹配。
- 时间限制:1 秒
- 空间限制:32768K
代码
1 | public class Solution { |
字符流中第一个不重复的字符
题目描述
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。
- 时间限制:1秒
- 空间限制:32768K
这里的256是按照《剑指Offer》中说的8位的char类型。
代码
1 | public class Solution { |
表示数值的字符串
题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串 “+100”,”5e2”,”-123”,”3.1416” 和 “-1E-16” 都表示数值。 但是 “12e”,”1a3.14”,”1.2.3”,”+-5” 和 “12e+4.3” 都不是。
- 时间限制:1秒
- 空间限制:32768K
代码
枚举方式,很多个if嵌套,感觉不是很好。很冗长。不过确实可以体现解题思路。
1 | public class Solution { |
看到有人的解题方法是使用Double.parseDouble(new String(str));方法,感觉不是很好,如果字符串表示的数值范围超出了Double呢?!
代码2
1 | public class Solution { |
简洁、简单明了。
有人提到可以使用“编译原理中自动机”实现,思路条理清晰,赞。
小结
注意上述几个问题的边界问题处理方式。null、空字符串、不符合要求的、符合要求的、多重符合题目要求的,均可以自己写出相应的字符串进行测试,防止程序出现异常而崩溃。
题目简单并不意味着代码简单。