面试代码基础(一)从strstr说起
对于写程序要注意:要能在面试官的提示下把代码写出来(把思想实现的能力)!还要注意边界检查!递归找到出口!
开场来个简单字符串匹配
int strstr(char* target,char* source){
if(target==NULL||source == NULL){
return -1;
}
int i=0,j=0;
for(int i=0;i<strlen(source)-strlen(target)+1;i++){
for(int j=0; j<strlen(target); j++){
if(source[i] != target[j]){
break;
}
}
if(j=strlen(target)){
return i;
}
}
return -1;
}
一:排列&&组合模板
subsets 求所有的子集
{1,2,3}
[
[],//别忘了空
[1],
[2],
[3],
[1,2],
[1,3],
[2,3],
[1,2,3],
]
在这里采用深度优先的思想
注意去除重复的:利用pos标记
1.思想:思考递归,是一个树的结构,把1开头的找出来,把2开头的,把3开头的,递归你add了什么事情,递归回来要pop掉
把list的所有子集放在rst里。记得放入空。
vector<int> &subsets(vector<int> &rst,vector<int>& num,vector<int>& list,int pos){
rst.push_back(list);
for(int i=pos;i<num.size();i++){
list.push_back(num[i]);
subsets(rst,num,list,i+1);
list.pop_back();
}
}
2.扩展:带重复元素的子集,那么[1,2(2)]和[1,2(3)]就会产生重复
笨想法:在加入rst里查找是否包含!!
这样会浪费时间,有没有更方便快速的
要取相同的数必须连续的取,不允许跳过取,那么先要进行排序
a.对num排序!!!
b.跳过同样的数,这dfgui种情况不合法就跳过continue;
sort(num.begin(),num.end());
vector<int> &subsets(vector<int> &rst,vector<int>& num,vector<int>& list,int pos){ rst.push_back(list);
for(int i=pos;i<num.size();i++){
if(i != pos && num[i-1] == num[i]){
continue;
}
list.push_back(num[i]);
subsets(rst,num,list,i+1);
list.pop_back();
} }
pos [1,2,2]
[1]
pos=1;//下标是1
i=pos=1;
跳过pos往后取。
应该从pos这里开始往后取(包括pos)
但是pos没取 取pos后面的
发现i与i-1取值相同,跳过i
if(pos!=i && num[i] == num[i-1])
3.求回文分割
aab
思想 :假设aa之间有一个数#,ab之间有一个数&
那么4种情况,
取 #
取 &
取 #&
都不取!!!!!
相当于求两个数的所有子集
思考下代码怎么写?
面试代码基础(一)从strstr说起的更多相关文章
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
- java面试| 精选基础题(3)
每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 系列文章 java面试| 精选基础题(1) java面试|精选基础题(2) 1.float f=3.4;是否正确? 答:不正确,编译无法通过 ...
- java面试| 精选基础题(2)
关注微信公众号"java从心",置顶公众号 每天进步一点点,距离大腿又近一步! 阅读本文大概需要6分钟 继续挖掘一些有趣的基础面试题,有错望指出来哈,请赐教~ 1.包装类的装箱与拆 ...
- Android逆向-java代码基础
作者:I春秋作家——HAI_ 0×00 前言 看这篇可以先看看之前的文章,进行一个了解.Android逆向-java代码基础(1)Android逆向-java代码基础(2) 之前看到有大佬用smali ...
- 003-Python3-基础语法-运行方式、代码基础要求、运算符[算数运算符、比较运算符、赋值运算符、位运算符、逻辑运算符、成员运算符、身份运算符]、运算符优先级
一.基础语法 参看地址:https://www.runoob.com/python3/python3-tutorial.html 1.1.运行方式 1.文件方式 编写一个hello.py文件, pri ...
- PHP面试大全 基础篇100道问题
2017年3月7日14:23:21 其实计划很久但是移植没时间去收集和处理弄成一个完整的文件 SVN地址: https://git.oschina.net/zxadmin/live_z 目前基础部分更 ...
- CMB面试准备-基础
1.简述 private. protected. public. internal 修饰符的访问权限 private : 在类的内部才可以访问. protected : 保护成员,该类内部和继承类中可 ...
- 细节!重点!易错点!--面试java基础篇(二)
今天来给大家分享一下java的重点易错点第二部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.字符串创建与存储机制:当创建一个字符串时,首先会在常量池中查找是否已经有相同的字符串被定义,其判断 ...
- 细节!重点!易错点!--面试java基础篇(一)
今天来给大家分享一下java的重点易错点部分,也是各位同学面试需要准备的,欢迎大家交流指正. 1.java中的main方法是静态方法,即方法中的代码是存储在静态存储区的. 2.任何静态代码块都会在ma ...
随机推荐
- Android开发:带动画的分享效果
这几天做了个带动画的分享页面.如今把它分享出来,假设你认为实用,请直接使用,避免反复造轮子 先看下效果图 认为仅仅是看效果图不明显.那么用手机扫描以下的二维码下载安装包:
- web.xml中的元素
error-page元素包含三个子元素error-code,exception-type和location.将错误代码(Error Code)或异常(Exception)的种类对应到web应用资源路径 ...
- 使用python操作json文本文件
使用python读写文本文件内容时,我们知道如果文本文件里的内容无规律,那么修改起来比较麻烦.但是如果文本文件存储是有规律的,比如JSON格式,在利用python内置的函数把JSON格式的数据转成py ...
- SpringMVC的其他功能使用
一.SpringMVC支持在控制器的业务方法中写入参数作为传递过来的变量 @Controller @RequestMapping(value="/kaiye") public cl ...
- macOS Sierra上ssh免密码登录linux服务器
1.生成私钥文件 在客户端终端下输入以下命令 ssh-keygen -t rsa 每次执行 ssh-keygen -t rsa 产生的私钥文件都会不同 如果文件"~/.ssh/id_rsa& ...
- 百度NLP二面
实验室项目:1.实验室方向 2.用两分钟介绍自己的项目,创新点在哪里 个人项目: 1.自己实现的贝叶斯分类器,目的,怎么做的 2.怎么计算各个分类的先验.(因为我使用的训练预料是每个分类10篇 ...
- boost enable_shared_from_this
关于shared_ptr和weak_ptr看以前的:http://www.cnblogs.com/youxin/p/4275289.html The header <boost/enable_s ...
- JAVA中重写equals()方法为什么要重写hashcode()方法?
object对象中的 public boolean equals(Object obj),对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true:注意:当此方法 ...
- 【java】使用Builder模式,轻松应对动态繁杂的方法参数
背景:在咱编写的图片处理模块里,针对加载这个方法,参数很多,如: /** * 加载图片,经过内存.磁盘.两层缓存如果还没找到,则走http访问网络资源 * @param url 地址 * @param ...
- AJAX POST请求中参数以form data和request payload形式在php中的获取方式
一.MINE TYPE问题: php对mime type为“application/x-www-form-urlencoded”(表单提交)和“multipart/form-data”(文件上传)的P ...