leetcode 字符串
2015-08-15 01:21
274 查看
class Solution { public: bool isPalindrome(string s) { transform(s.begin(), s.end(), s.begin(), ::tolower); auto first = s.begin(), last = prev(s.end()); while(first < last){ if(!::isalnum(*first)) ++first; else if(!::isalnum(*last)) --last; else if(*first != *last) return false; else {++first, --last;} } return true; } };
解法1:
class Solution { public: int strStr(string haystack, string needle) { int m = haystack.length(), n = needle.length(); if(!n) return 0; for(int i = 0; i < m - n + 1; ++i){ int j = 0; for(; j < n; ++j) if(haystack[i + j] != needle[j]) break; if(j == n) return i; } return -1; } };
class Solution { public: string addBinary(string a, string b) { string result; const size_t n = a.size() > b.size() ? a.size() : b.size(); reverse(a.begin(), a.end()); reverse(b.begin(), b.end()); int carry = 0; for(size_t i = 0; i < n; ++i){ const int ai = i < a.size() ? a[i] - '0' : 0; const int bi = i < b.size() ? b[i] - '0' : 0; const int val = (ai + bi + carry) % 2; carry = (ai + bi + carry) / 2; result.insert(result.begin(), val + '0'); } if(carry == 1) result.insert(result.begin(), '1'); return result; } };
偷懒,用STL
class Solution { public: int lengthOfLastWord(string s) { auto last = find_if(s.rbegin(), s.rend(), ::isalpha); auto first = find_if_not(last, s.rend(), ::isalpha); return distance(last, first); } };
题3.11
class Solution { public: int map(char c){ switch(c){ case 'I': return 1; case 'V': return 5; case 'X': return 10; case 'L': return 50; case 'C': return 100; case 'D': return 500; case 'M': return 1000; default: return 0; } } int romanToInt(string s) { int result = 0; for(size_t i = 0; i < s.size(); ++i){ if(i > 0 && map(s[i]) > map(s[i - 1])) result += (map(s[i]) - 2 * map(s[i - 1])); else result += map(s[i]); } return result; } };
相关文章推荐
- Mac 系统下vbox 的双网卡配置
- [机器学习]content-based recommendation
- tableView-自定义非等高cell(2)
- mac apache vhost 配置时出现的 404
- AutoBundle in asp.net mvc 5
- VS动态链接库隐式创建和调用
- 程序的编译、链接与装载
- 利用HTTP-only Cookie缓解XSS
- HDU 1556 Color the ball 线段树
- HDU 5384 Danganronpa(AC自动机)
- tableView-自定义非等高cell(1)
- 菜单状态更新
- ArcGIS地质图矢量化技巧概要
- [置顶] Genymotion 出现the number of cpus of the virtual device has been forced to be 1的解决方法
- android:layout_weight详解
- arcgis切割多边形以及合并多边形
- 《金砖之国》
- UVA 12486 Space Elevator(数位DP)
- HDU 5387 Clock
- HDU1466 计算直线的交点数