上一页 1 ··· 35 36 37 38 39 40 41 42 43 ··· 62 下一页
摘要: 回文构词法,将字母顺序打乱。可将字母重新排序,若它们相等,则属于同一组anagrams。 可通过hashmap来做,将排序后的字母作为key。注意后面取hashmap值时的做法。 vector<string> anagrams(vector<string> &strs) { unordered_ma 阅读全文
posted @ 2016-05-26 08:28 牧马人夏峥 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 很有意思的一道题,不好想啊。 string getNext(string &s) { char start = s[0]; int count = 0; stringstream ss; for (int i = 0; i < s.size(); i++) { if (start == s[i]) 阅读全文
posted @ 2016-05-25 18:26 牧马人夏峥 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 这题实现起来还是挺麻烦的,就偷懒使用下库函数strtod()。第二个参数表示字符中不是数字的地方,如果后面是空格,则认为其仍是数字,否则不是。 bool isNumber(char *s) { char *endptr; strtod(s, &endptr); if (endptr == s)ret 阅读全文
posted @ 2016-05-25 17:20 牧马人夏峥 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 在一组字符串中找到最长的子串。采用纵向匹配,遇到第一个不匹配的停止。 string longestComPrefix(vector<string> &strs) { if (strs.empty())return " "; //纵向比较 for (int idx = 0; idx < strs[0] 阅读全文
posted @ 2016-05-25 17:02 牧马人夏峥 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 跟上题类似,主要考虑‘*’的匹配问题。如果遇到‘*’,则跳过继续匹配,如果不匹配,则s++,重新扫描。 bool isMatch2(const char *s, const char *p) { if (*p == '*') { while (*p == '*')p++; if (*p == '\0 阅读全文
posted @ 2016-05-25 16:45 牧马人夏峥 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 正则表达式的匹配,还是挺难的。可根据下一个字符是不是*分为两种情况处理,需要考虑多种情况。 bool isMatch(const char *s, const char *p) { if (*p == '\0')return *s == '\0'; //如果下一个不是*(*可表示前一个字符的数量) 阅读全文
posted @ 2016-05-24 16:20 牧马人夏峥 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 很经典的一道题,最长回文子串,有多种方法。 首先介绍的一种方法是从中间向两边展开。注意区分aba和abba型的回文串;如果当前最长的子串已经当于两边中最长的子串了,则无需再去判断。 //从中间向两边展开 string expandAroundCenter(string s, int c1, int 阅读全文
posted @ 2016-05-24 15:07 牧马人夏峥 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 比较简单,细节:先将字符串翻转,注意进位。 string addBinary(string a, string b) { string result; int len = a.size() > b.size() ? a.size() : b.size(); reverse(a.begin(), a. 阅读全文
posted @ 2016-05-23 13:10 牧马人夏峥 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 字符串转为数字,细节题。要考虑空格、正负号,当转化的数字超过最大或最小是怎么办。 int atoi(char *str) { int len = strlen(str); int sign = 1; int num = 0; int i = 0; while (str[i] == ' '&& i < 阅读全文
posted @ 2016-05-23 12:53 牧马人夏峥 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 字符串的匹配,返回匹配开始的位置,直接用暴力方式求解。为了更快的匹配,定义一个指针表示待匹配的字符串的长度,当长度不足时,可 直接停止匹配。 char *strStr(char *haystack, char*needle) { char* p1; char* p2; char* p1_advanc 阅读全文
posted @ 2016-05-23 12:30 牧马人夏峥 阅读(103) 评论(0) 推荐(0) 编辑
上一页 1 ··· 35 36 37 38 39 40 41 42 43 ··· 62 下一页