- 浏览: 162941 次
- 性别:
- 来自: 深圳
-
最新评论
-
l0979365428:
给楼主补充个图片就完美了~
信息增益与熵
文章列表
字符串的最长连续重复子串
- 博客分类:
- 笔试面试
两种方法:
循环两次寻找最长的子串:
<方法一>
#include <iostream>
#include <stdio.h>
#include<string>
using namespace std;
int main(){
string str,tep;
cin>>str;
for(int i=str.length()-1;i>1;i--){
for(int j=0;j<str.length();j++){
if(j+i<=str.length()){
size_t t= ...
寻找一个字符串连续出现最多的子串的方法(转)
- 博客分类:
- 笔试面试
算法描述首先获得后缀数组,然后1.第一行第一个字符a,与第二行第一个字符b比较,不等,则2.第一行前两个字符ab,与第三行前两个字符cb比较,不等,则3.第一行前三个字符abc,与第四行前三个字符bcb比较,不等,则4.第一行前四个......上述过程就相当于在原始字符串中,第一趟,a与b比较,ab与cb比较,abc与bcb比较,abcb与cbca比较,abcbc与bcabc比较,abcbcb与cabc比较......第二趟,b与c比较,bc与bc比较(相等,则继续向后取长度为2的子串比较,碰到不等为止,本例中因碰到ab停止),bcb与cbc比较......第三趟,c与b比较,cb与cb比较(相 ...
假设字符串:abcdefg
左循环两位:cdefgab
右循环两位:fgabcde
规律:
AB->BA==((A的反转)(B的反转))的反转=(B的反转)的反转(A的反转)的反转=BA
1
//
将一个字符串中某个子串反序
2
void
reverseOrder(char
* str, int
p, int
q)
3
{
4
char
temp;
5
while
(p < q)
6
{
7
temp = str[p];
8
st ...
一次谷歌面试趣事(转)
- 博客分类:
- 笔试面试
很多年前我进入硅谷人才市场,当时是想找一份高级工程师的职位。如果你有一段时间没有面试过,根据经验,有个非常有用的提醒你应该接受,就是:你往往会在前几次面试中的什么地方犯一些错误。简单而言就是,不要首 ...
约瑟夫环问题(循环链表)
- 博客分类:
- 笔试面试
题目描述:n只猴子要选大王,选举方法如下:所有猴子按 1,2 ……… n 编号并按照顺序围成一圈,从第 k 个猴子起,由1开始报数,报到m时,该猴子就跳出圈外,下一只猴子再次由1开始报数,如此循环,直到圈内剩下一只猴子时,这只猴子就是大王。
输入数据:猴子总数n,起始报数的猴子编号k,出局数字m
输出数据:猴子的出队序列和猴子大王的编号
代码修改了一天才完成,第一次是用多个函数写的,但是发觉C语言没有引用参数这个特性,使得形参指针不能被直接修改,必须靠返回值来修改才行,这样太麻烦了...于是第二次写的时候就没有使用函数,直接在main()里完成了循环链表的操作,感觉应该没什么问题,哪位 ...
#include <iostream.h>
#include <memory.h>
class CA
{
int k;
public:
void f() {cout << "CA::f" << endl;}
};
自己实现strcpy()以及memcpy()
- 博客分类:
- 笔试面试
char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL)); // 2分
char *address = strDest; // 2分
while( (*strDest++ = * strSrc++) != ‘\0’ ) // 2分
NULL ;
delete []p 和 delete p的区别
- 博客分类:
- 笔试面试
operator new 和 operator delete函数有两个重载版本,每个版本支持相关的new表达式和delete表达式:
在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]。 关于 new[] 和 delete ...
虚表解析以及构造函数为什么不能是虚函数
- 博客分类:
- 笔试面试
仅通过基类的接口,程序调用了正确的函数,编译器是如何知道正确代码的位置的呢?
其实,编译器在编译时并不知道要调用的函数体的正确位置,但它插入了一段能找到正确的函数体的代码。这称之为 晚捆绑(late binding) 或 运行时捆绑(runtime binding) 技术。 通过virtual 关键字创建虚函数能引发晚捆绑,编译器在幕后完成了实现晚捆绑的必要机制。它对每个包含虚函数的类创建一个表(称为VTABLE),用于放置虚函数的地址。在每个包含虚函数的类中,编译器秘密地放置了一个称之为vpointer(缩写为VPTR)的指针,指向这个对象的VTABLE。
关于 ...
C++类对象的创建过程
- 博客分类:
- C系列
分配空间(Allocation) 创建C++类对象的第一步就是为其分配内存空间。对于全局对象,静态对象以及分配在栈区域内的对象,对它们的内存分配是在编译阶段就完成了,而对于分配在堆区域内的对象,它们的分配是在运行 ...
静态数据成员和静态成员函数
- 博客分类:
- C系列
静态类成员包括静态数据成员和静态函数成员两部分。
与全局变量相比,优势:1. 静态数据成员仍然是在类域名字空间,没用进入程序的全局名字空间,因此不存在与程序中其他全局名字冲突的可能2. 可以实现信息隐藏,静态数据成员可以是private成员,全局变量不行静态数据成员: 静态数据成员必须在类定义外初始化,但const静态数据成员除外,const静态数据成员可以在类体中初始化 class c1 { public: private: static int num; static const string name = "chio"; };
int ...
复制构造函数(拷贝构造函数)以及深浅拷贝
- 博客分类:
- C系列
对于普通对象而言复制是很简单的,一般是将变量或者常量赋值给某一个变量:int a=88;int a=b;而对于类对象而言,由于其内部结构复杂,复制过程便有一些道道:
#include <iostream>using namespace std;class CExample {private: int a;public: CExample(int b) { a=b;} void Show () { cout<<a<<endl; }};
学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息;
1、cin
1、cin.get()
2、cin.getline()
3、getline()
4、gets()
5、getchar()
1、cin>>
用法1:最基本,也是最常用的用法,输入一个数字:
#include <iostream>
using namespace std;
main ()
{
int a,b;
...