关于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 ...
随机推荐
- eclipse开发c++时cout和endl报错
1.Symbol 'cout' could not be resolved , 选择kepler版本号就不报错了. 2. 下载gdb, ./configure make sudo make inst ...
- 高性能浏览器网络(High Performance Browser Networking) 第二章
第2章 TCP篇 互联网的核心是两个协议,IP和TCP. IP也叫Internet协议,提供主机到主机的路由和寻址:TCP,传输控制协议,在不可靠的传输通道上提供一个可靠的网络抽象.TCP / IP协 ...
- 在 Parallels Desktop 中,全屏模式使用 Win7,唤醒时黑屏
在Parallels Desktop中,全屏模式下使用Win7,如果Mac电脑自动休眠了,则无法再次唤醒了,唤醒时黑屏. 博主的Mac是2014款MBPR,键盘上所有的键都试过,还是无法唤醒电脑,每次 ...
- android开发SD卡工具类(一)
SD卡工具类整理: package com.gzcivil.utils; import java.io.File; import java.io.FileInputStream; import jav ...
- CRC循环校验码
为了防止数据在传输的时候丢失或被篡改,有了各种校验码. 每种CRC校验都有自己的多项式.每个多项式都有唯一对应的二进制. CRC16就如果名字一样,校验码就是16位的 如果CRC32就是32位的. 原 ...
- c#中的数据类型简介(string)
Sting 字符串 引入话题 字符串是一个引用类型,从string数据类型的代码定义中也可以看出它实现了IEnumerable<char>接口和IEnumerable接口,因此字符串可以看 ...
- HDU 1038 - Biker's Trip Odometer
算一下路程和速度... #include <iostream> #include <cstdio> using namespace std; const double p=3. ...
- 《C++ 标准库》读书笔记 - 第二章 Introduction to C++ and the Standard Library
1. History of the C++ Standards 1.1 History of the C++ Standards C++98 -> C++03 -> TR1 -> C ...
- sublime text帮你更好的写python
在Google的Python风格指南中,有这样的要求: 用4个空格来缩进代码 但是每次在敲代码的时候,用一个tab确实比敲四次空格方便的多.令人欣慰的是sublime text 2能够把tab转换成4 ...
- 菜鸟的jQuery源码学习笔记(前言)
前言 相信任何一名前端开发人员或者是前端爱好者都对jQuery不陌生.jQuery简单易用,功能强大,特别是拥有良好的浏览器兼容性,大大降低了前端开发的难度,使得前端开发变得“平易近人起来”.自从本人 ...