关于debug和release 以及new 和delete
题目:给出一组字符串
输入:"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 以及new 和delete的更多相关文章
- 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理
Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services.exe -unregserver Windows服务Release版本 注册 Servi ...
- VS2008 Debug与Release的本质区别(转)
如何设置:工具栏“生成”→“配置管理器”→“活动解决方案配置” 对于VS2008的初次使用者来说,常会遇到的编译问题时,Debug版本运行正常,但在Release版本则不稳定或无法运行.以下是对Deb ...
- Debug与Release的区别
Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M).至于是否需要DLL支持,主要看你采用的编译选项.如果是基于ATL的,则Debug和Release版本对DLL的要求差 ...
- [转]Debug 和 Release 编译方式的区别
本文主要包含如下内容: 1. Debug 和 Release 编译方式的本质区别 2. 哪些情况下 Release 版会出错 3. 怎样“调试” Release 版的程序 Debug 和 Releas ...
- C++中debug和release的区别 . 转载
vc中debug和release的不同 收藏 在使用VC开发软件的过程中,正当要享受那种兴奋的时候突然发现:release与debug运行结果不一致,甚至出错,而release又不方便调试,真的是当 ...
- Debug 和 Release 编译方式的本质区别
一.Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进行了各种优化,使得程 ...
- Debug和Release之本质区别
转自Debug和Release之本质区别 Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发 ...
- (原)Vs中debug和release结果不一致
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5598091.html 前两天调试程序,出现了一个很蛋疼的问题,debug和release结果不一致.网 ...
- 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理
原文:玩转Windows服务系列——Debug.Release版本的注册和卸载,及其原理 Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services ...
随机推荐
- HDU2842-Chinese Rings(递推+矩阵高速幂)
pid=2842">题目链接 题意:求出最少步骤解出九连环. 取出第k个的条件是,k-2个已被取出,k-1个仍在支架上. 思路:想必九连环都玩过吧,事实上最少步骤就是从最后一个环開始. ...
- 前端学习——JQuery Ajax使用经验
0.前言 在项目推进过程中常常使用Ajax,通过Jquery提供的函数能够很方便的使用Ajax,可是在实际使用中也遇到一些问题,比如怎样防止浏览器使用缓存,怎样使用同步方式等.通过博文整理总结 ...
- hibou 主界面自己侧滑的定义
要打滑View参加UIPanGestureRecognizer #pragma mark 手势识别器回调方法 - (void)dragView:(UIPanGestureRecognizer *)ge ...
- chrome调试工具常用功能整理(转)
Elements chrome devtools 中 Elements panel 是审查 dom 元素和 css 的, 可以实时修改 dom/css. windows: ctrl + shift + ...
- 使用VS2003 发送Email
使用VS2003发送Email与之后VS2005版本及以上VS版本不一样,记录一下, 需要引用using System.Web.Mail; public void SendEmail() { try ...
- [string]Roman to Integer,Integer to Roman
一.Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within ...
- Android 获取系统图库和相机照片 裁剪并显示
接上一篇 package com.example.image; import android.app.Activity; import android.content.Intent; import a ...
- Android Studio 实时显示布局文件Preview窗口
Android Studio的功能包含preview窗口, 可以查看布局(layout)的样式; 位置:app->src->main->res(资源)->layout(布局), ...
- mysql性能优化学习笔记(3)常见sql语句优化
一.max()优化mysql> explain select max(payment_date) from payment;+----+-------------+---------+----- ...
- ffmpeg在Win7 VS2010中debug通过,release出错的问题解决方法
我所用的系统环境是Win7 32位操作系统+VS2010编译环境.所以在debug模式下调通之后,在Release模式下调试不通过,最后通过上网查资料和自己对比两个编译选项得出以下结论: 修改“项目- ...