题目:给出一组字符串

输入:"ate","eat","Eat","new","ENW",“wha”

输出::"ate","eat","Eat","

"new","ENW"

第一种方法,首先将所有字符串都转换为小写(或者大写也OK,重点在于统一字符串),

然后将单个字符串中的字母按照大小顺序进行排列;

最后比较字符串大小,如果有相同的字符串就输出。

这种方法复杂度其实也挺大的,因为有三层循环。

第二种方法,第一步同第一种方法

然后利用字符串中自带find函数进行查找,

用一个vector存储相同的字符串的位置

好吧,这种方法其实复杂度太大了,因为find 函数本来就是一重循环,共有四层循环

第三种方法,好吧,我承认是昨天看了hash表的原因,我想采用hash表来实现

首先计算每个字符串的hash值,方法如下,当然也可以改变方式

string s;  int value;

for(string::iterator it=s.begin(),it!=s.end();it++)

{

if(isupper(*it))

value+=(*it-'A');

else

value+=(*it-'a');

}

将字符串插入到hash表中的方法是,由于每一行是我们需要的“相同”的字符串,所以首先是判断hash值是否相同,如果相同了之后再比较这两个字符串是否“相同”

如果字符串也“相同”,采用头插法插入字符串;如果不相同的话则采用线性探测法去寻找储存该字符串的位置,(现在看来貌似这点我有点没有做好,改一改)

最后也实现了相同的功能。这种方法主要是想通过hash值的设置来减少字符串的比较次数,从而降低复杂度。

尝试了一下,采用10000组数据,发现第二种方法永远是最劣质的,好吧,这种方法我也觉得,看几个的时候还是OK的,数据一多的时候,立马暴露缺陷了。

但是奇怪的事情出现了,第三种方式在debug模式下足足比第一种方式快了10倍,但是一到release模式下竟然比第一种方式还慢了一半,实在是百思不得其解啊,看来还是要好好看看debug和release的区别了!!!

debug和release模式下的区别

关于debug和release 以及new 和delete的更多相关文章

  1. 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理

    Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services.exe -unregserver Windows服务Release版本 注册 Servi ...

  2. VS2008 Debug与Release的本质区别(转)

    如何设置:工具栏“生成”→“配置管理器”→“活动解决方案配置” 对于VS2008的初次使用者来说,常会遇到的编译问题时,Debug版本运行正常,但在Release版本则不稳定或无法运行.以下是对Deb ...

  3. Debug与Release的区别

    Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M).至于是否需要DLL支持,主要看你采用的编译选项.如果是基于ATL的,则Debug和Release版本对DLL的要求差 ...

  4. [转]Debug 和 Release 编译方式的区别

    本文主要包含如下内容: 1. Debug 和 Release 编译方式的本质区别 2. 哪些情况下 Release 版会出错 3. 怎样“调试” Release 版的程序 Debug 和 Releas ...

  5. C++中debug和release的区别 . 转载

    vc中debug和release的不同 收藏  在使用VC开发软件的过程中,正当要享受那种兴奋的时候突然发现:release与debug运行结果不一致,甚至出错,而release又不方便调试,真的是当 ...

  6. Debug 和 Release 编译方式的本质区别

    一.Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化,使得程 ...

  7. Debug和Release之本质区别

    转自Debug和Release之本质区别 Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发 ...

  8. (原)Vs中debug和release结果不一致

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5598091.html 前两天调试程序,出现了一个很蛋疼的问题,debug和release结果不一致.网 ...

  9. 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理

    原文:玩转Windows服务系列——Debug.Release版本的注册和卸载,及其原理 Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services ...

随机推荐

  1. 【最大流,二分图匹配】【hdu2063】【过山车】

    题意:裸的求二分图匹配 建立一个源点 连向一边所有的点 容量为1; 另外一边点都连向汇点  容量为1; 二分图的边容量也为1 源点汇点求一遍最大流即可 #include <cstdio> ...

  2. RadioButtonList选择事件onclick

    <asp:RadioButtonList ID="rbtnFInvoiceType" runat="server" onclick="check ...

  3. Hadoop 安装大纲

    安装centos,配置stable ip address,文件系统,根目录用户密码,hostname,安装相关工具 打开centos,创建hadoop用户,密码.配置eth0,onboot=YES, ...

  4. HTML1网页三部份内容

    网页三部份内容:HTML CSS Javascript 路径:一般做网页的时候用的相对路径. images/aaa.jpg 网页同一个目录中找images文件夹,再在images里面找aaa.jpg ...

  5. UVa 1585 - Score

    得分是目前连续O 的个数,遇到X置0 #include <cstdio> #include <iostream> #include <cstring> using ...

  6. C++ extern "C",C与C++的区别

    1. C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数.但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同. 2 ...

  7. Facebook发布C++ HTTP框架Proxygen

    Facebook 宣布发布C++ HTTP 框架 Proxygen,其中包括了一个 HTTP server.Proxygen 是 oxygen 的谐音,支持 SPDY/3 和 SPDY/3.1,未来还 ...

  8. Linux 终端颜色高亮

    昨天在改一些东西时,不小心将root下的一些配置文件删掉了.导致启动终端后,字完全一个颜色,没有区分.在网上找到的都是 改整体颜色的.但实际上这时应该搜Linux终端高亮才能找到解决办法.在这里再列出 ...

  9. Linux定时任务Crontab命令详解

    linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的.另 外, 由于使用者自己也可以设置计划任务,所以, ...

  10. 图像 - 创建 头像V1.0

    byte[] logo //处理群头像信息 //byte[] logoByte = Convert.FromBase64String(logo); ////1.0 System.IO.MemorySt ...