2015-12-09
来源:互联网 发布:html5 微场景源码 编辑:程序博客网 时间:2024/06/05 17:31
1.leetcode 字符处理
(1)仅看字符串中字母数字,是否构成回文。时间O(n),空间O(1)
bool isPalindrome(string s) { string str; int i = 0 , j= s.length()-1; while (i < j){ while(i<j && !(s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z' || s[i] >= '0' && s[i] <= '9')) ++i; while(i<j && !(s[j] >= 'a' && s[j] <= 'z' || s[j] >= 'A' && s[j] <= 'Z' || s[j] >= '0' && s[j] <= '9')) --j; //cout<<i<<" "<<j<<endl; if(!(s[i] == s[j] || s[i]-'a' == s[j]-'A' || s[i] - 'A' == s[j] - 'a')) return false; ++i; --j; } return true;}
- 自己测试的时候,想从文件输入到string中,查到了两个方法。IOStream著名专家Dietmar Kuehl给过两个方法
std::ifstream in("some.file");
std::istreambuf_iterator<char> beg(in), end;
std::string str(beg, end);
或
std::ifstream in("some.file");
std::ostringstream tmp;
tmp << in.rdbuf();
std::string str = tmp.str();
- 字母数字,C++中有可以直接用的函数:
(2)找到haystack中是否包含needle,包含返回位置i,不包含返回-1;isalnum(c)判断c(char)是否是英文字母或者数字,若参数c 为字母或数字( 0 ~ 9 a ~ z A ~ Z )则返回非 0,否则返回 0。
int toupper(int c);该函数等效返回大写字母C,如果存在这样的值,否则c保持不变。返回值可以隐式转换为char的int值。
int tolower(int c);该函数等效返回小写字母c,如果存在的值,否则c保持不变。返回值可以隐式char为int值。
int strStr(string haystack, string needle) { //暴力,想一下,如果为空串时候,程序结果是否正确 if(haystack.length()< needle.length()) return -1; int i,j; for(i = 0; i <= haystack.length()- needle.length(); ++i){ int k = i; for(j = 0; j < needle.length(); ++j){ if(haystack[k] != needle[j]) break; else k++; } if(j == needle.length()) return i; } return -1;}
<ul><li><span style="font-family: 微软雅黑, 'Microsoft Yahei', Arial, Helvetica, sans-serif;">二层循环可以用j当作索引增量,比较haystack[i+j]与needle[j]</span></li></ul>
<ul><li><span style="font-family: AdobeSongStd-Light; font-size: 8pt;">暴力算法的复杂度是 <span style="font-family: CMMI9; font-size: 8pt;"><em>O </em><span style="font-family: CMR9; font-size: 8pt;">( <span style="font-family: CMMI9; font-size: 8pt;"><em>m </em><span style="font-family: CMSY9; font-size: 8pt;"><em>∗ </em><span style="font-family: CMMI9; font-size: 8pt;"><em>n </em><span style="font-family: CMR9; font-size: 8pt;">)<span style="font-family: AdobeSongStd-Light; font-size: 8pt;">,代码如下。更高效的的算法有 <span style="font-family: TimesNewRomanPSMT; font-size: 8pt;">KMP <span style="font-family: AdobeSongStd-Light; font-size: 8pt;">算法、 <span style="font-family: TimesNewRomanPSMT; font-size: 8pt;">Boyer-Mooer <span style="font-family: AdobeSongStd-Light; font-size: 8pt;">算法和<span style="font-family: TimesNewRomanPSMT; font-size: 8pt;">Rabin-Karp <span style="font-family: AdobeSongStd-Light; font-size: 8pt;">算法。面试中暴力算法足够了,一定要写得没有 <span style="font-family: TimesNewRomanPSMT; font-size: 8pt;">BUG</span><br style="orphans: 2; text-align: -webkit-auto; widows: 2;" /></span></span></span></span></span></span></span></span></span></span></span></span></span></span></li></ul>
0 0
- 2015-12-09
- 2015-12-09
- 2015-12-09
- android 实践- 2015-09-12
- 2015-12-09 sql复习
- 2015-09-12总结与学习计划
- rails 安装在mac 2015-09-12
- 2015年09月12日
- 2015年09月12日
- 开发中遇到的问题(2015-09-12)
- 2015-12-09复习之CSS(3)基础
- 最新 Google V8 编译 (2015-12-09)
- 最新Google V8 编译(2015-12-09) 之 HelloWorld
- 2015-09-09
- 2015-09-09
- 12-12-09记录
- android 实践-2015/09/09
- Hdoj.4291 A Short problem【矩阵快速幂+循环节处理】 2015/12/09
- Java——1个自动拆箱的例子
- 2015年-Google北京区-software engineering intern-面试经验
- Android学习笔记(7):View类
- 类的继承与接口
- Activiti进阶(二)——部署流程资源的三种方式
- 2015-12-09
- 海康威视的sdk中java版本Demo的Bug
- 关于小型管理系统的数据库连接及其运行
- 关于 android app 返回键模拟 home键 功能的介绍_仿QQ返回键 又重新回到当前界面_锁屏状态 又要重新唤醒
- File常用方法
- 异常: 2 字节的 UTF-8 序列的字节 2 无效。
- Oracle之SQL基础--约束
- git总结
- [Interview Summary] HTML+CSS Part I