随笔分类 -  字符串String

与字符串相关的算法,操作,分析。
摘要:在程序语言中,字符串可以说是最常用的一种类型,而在程序中对字符串的操作也是十分频繁。当程序语言自带多种字符串操作的方法时,用该语言编程程序时就有很多的便利性,提高开发的效率。但是当方法过多,甚至目的相似、参数雷同的时候,就容易造成迷惑难以选择的窘境。在JavaScript中就有这样的情况出现,对于取字符串的子串的操作,JavaScript提供了三种不同的方法:slice,substr,substring。虽然在网上随便搜索一下,就可以找到介绍三者区别的文章,但是每次使用的时候,依然会迷糊无从选择。因此结合网上介绍的区别,在本文中将它们的异同之处罗列在表中,方便参照和区分。测试字符串: &quo 阅读全文
posted @ 2013-09-24 11:29 Ider 阅读(8917) 评论(7) 推荐(13) 编辑
摘要:最长公共子串(Longest Common Substring)是一个非常经典的面试题目,在实际的程序中也有很高的实用价值,所以把该问题的解法总结在本文重。不过不单单只是写出该问题的基本解决代码而已,关键还是享受把学习算法一步步的优化,让时间和空间复杂度一步步的减少的惊喜。概览最长公共子串问题的基本表述为:给定两个字符串,求出它们之间最长的相同子字符串的长度。最直接的解法自然是找出两个字符串的所有子字符串进行比较看他们是否相同,然后取得相同最长的那个。对于一个长度为n的字符串,它有n(n+1)/2 个非空子串。所以假如两个字符串的长度同为n,通过比较各个子串其算法复杂度大致为O(n4)。这还没 阅读全文
posted @ 2013-07-18 10:27 Ider 阅读(72912) 评论(19) 推荐(10) 编辑
摘要:这个题目其实有点标题党了,其实本篇文章主要内容应该是说“代码中的美元符号(dollar sign)”。想总结一下我所看到的美元符号在代码中的起到的作用,当然了并不是说它作为格式化字符时出现在数字前当钱币单位的作用。有效的变量名在取变量名的时候,我们通常都只使用字母,数字,下划线,而且数字不能作为开头。但是在很多编程语言中,对于变量名的限定更宽泛,很多特殊字符也可以作为变量名,当然也包括$。JavaScriptJavaScript允许$符号作为有效的识别来当做变量名或者方法名来使用。最著名的例子就是jQuery了,整个使用过程中到处都是$。$只是jQuery变量的一个别名,但是也正式$的短小、. 阅读全文
posted @ 2013-01-09 13:51 Ider 阅读(7337) 评论(2) 推荐(3) 编辑
摘要:字符串和数组在程序编写过程中是十分常用的类型,因此程序语言都会将String和Array作为基本类型,并提供许多字符串和数组的方法来简化对字符串的操作。JavaScript里面也提供了String类型和Array类型,并且有很多基本的String方法和Array方法来方便地对字符串进行合并、查找、替换、截取等处理。JavaScript作为一个脚本语言,又提供了一种动态解析运行的机制,而这特性,又让使得在String操作的时候出现一些结合使用Array的有趣方法。这些方法可能有些偏门有点奇怪,但有时在效率、可读性、复用性上表现得却更好。重复字符串常常我们想要把字符串多次打印出来(比如想要个分割线 阅读全文
posted @ 2012-12-12 02:53 Ider 阅读(2799) 评论(4) 推荐(1) 编辑
摘要:这是一道关于字符串的操作的问题,一开始思考的时候,感觉需要取出各种不同的子序列,如果是这样时间复杂度就会变成指数级别。不过在朋友的指示下,发现其实它是有规律可寻的,最后的算法时间负责度只要O(n),而且代码极其简单。虽然朋友是直接告诉了我其中的规律,但是我还是花了点时间思考和证明了一下,才放心的写下了代码。现在把它总结在这里。整个问题的证明基本是使用数学归纳法,以及奇数和偶数的一些性质。感叹数学的世界真奇妙。也庆幸自己一直以来我十分喜欢数学。其实计算机的世界本来就是建立在各种数学理论之上,比如离散数学,模糊数学,逻辑数学。但是计算机又让数学的应该变得更加的广阔。(你可以在看完题之后直接跳到红色 阅读全文
posted @ 2012-04-13 09:44 Ider 阅读(1756) 评论(0) 推荐(1) 编辑


我的围脖

Fly Me