面试代码基础(一)从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 ...
随机推荐
- Spring-基于设置函数的依赖注入
Spring 基于设置函数的依赖注入 当容器调用一个无参的构造函数或一个无参的静态factory方法来初始化你的bean后,通过容器在你的bean上调用设值函数,基于设值函数的DI就完成了. 下面是T ...
- linux 这是定时任务
1. 编写shell脚本:vim test.sh #/bin/bash echo "hello world" 2.crontab任务配置基本格式: * * * * * comm ...
- My Neural Network isn't working! What should I do?
参考文献:http://theorangeduck.com/page/neural-network-not-working 我的网络不起作用!该怎么办? 因此,你在深度学习方面正在开发下一个重大突破, ...
- ALV tree DUMP 问题处理-20180328
Category ABAP Programming Error Runtime Errors MESSAGE_TYPE_X ABAP Program SAPLOLEA Application Comp ...
- 简单的SQL注入学习
引贴: http://blog.163.com/lucia_gagaga/blog/static/26476801920168184648754/ 首先需要编写一个php页面,讲php页面放入/opt ...
- Docker给运行中的容器添加映射端口
方法一: 1.获得容器IP将container_name 换成实际环境中的容器名docker inspect `container_name` | grep IPAddress 2. iptables ...
- Linux kill和kill-9区别
进程状态转换图 kill和kill -9,两个命令在linux中都有杀死进程的效果,然而两命令的执行过程却大有不同,在程序中如果用错了,可能会造成莫名其妙的现象. 执行kill命令,系统会发送一个SI ...
- Struts2 iterator标签实现嵌套循环
问题:有一个List<List<Object>> list用struts2在页面显示使用<s:iterator value=”list” var=”list1″> ...
- CF519 ABCD D. A and B and Interesting Substrings(map,好题)
A:http://codeforces.com/problemset/problem/519/A 水题没什么好说的. #include <iostream> #include <st ...
- 数据库之ADO
ADO是一种跨多种语言的数据库访问技术. 在MFC里面微软公司将这些函数封装为以下几个类. 在VS2013版本的MFC中,这些类是如下定义的. CDaoDatabase Class:https://m ...