java算法:字符串
在C语言和其他语言中,串指的是长度变化的字符数组,有一个起始点和一个标识串结束的终止符。在Java中,串是具有内嵌语言支持的高级抽象结构,它的表示是隐藏的。
串是具有价值的数据结构,因为一些计算方面的应用会应用到文本数据,可以直接使用串来表示,可以直接、有效地访问内存字节,而内存字节对应着串中的字符。即,大多数情况下,串抽象结构与应用的需求相匹配,并能充分利用机器的能力。
例一:串查找
- publicstaticintcountMatches(Stringpattern,Stringsource){
-
intcnt=0;
-
intM=pattern.length();
-
intN=source.length();
-
if(M>N){
-
return0;
- }
-
for(inti=0;i<N;i++){
-
intj;
-
for(j=0;j<M;j++){
-
if(i+j<N){
-
if(source.charAt(i+j)!=pattern.charAt(j)){
-
break;
- }
-
}else{
-
break;
- }
- }
-
if(j==pattern.length()){
- cnt++;
- }
- }
-
returncnt;
- }
public static int countMatches(String pattern, String source){
int cnt = 0;
int M = pattern.length();
int N = source.length();
if(M > N){
return 0;
}
for (int i = 0; i < N; i++) {
int j;
for(j = 0; j < M; j++){
if(i + j < N){
if(source.charAt(i + j) != pattern.charAt(j)){
break;
}
}else{
break;
}
}
if(j == pattern.length()){
cnt++;
}
}
return cnt;
}
串的查找,它所花的时间与串的长度成正比。
如果source足够长,那么这段代码运行速度变慢,效率低下,这类问题可称为性能臭虫。因为经验验证程序代码的正确性,但是运行起来并不是我们所期望的。因此在研究有效算法之前,必须消除这类性能错误。
例二:串处理
- publicstaticStringsqueeze(Strings){
-
char[]a=s.toCharArray();
-
intN=1;
-
for(inti=1;i<a.length;i++){
- a[N]=a[i];
-
if(a[N]!=''){
- N++;
-
}elseif(a[N-1]!=''){
- N++;
- }
- }
-
returnnewString(a,0,N);
- }
public static String squeeze(String s){
char [] a = s.toCharArray();
int N = 1;
for(int i = 1; i < a.length; i++){
a[N] = a[i];
if(a[N] != ' '){
N++;
}else if(a[N - 1] != ' '){
N++;
}
}
return new String(a, 0, N);
}
返回一个串,除了把串中的连续空白符替换成单个空白符,其它与原串相同。
由于串是变化的,因此串的内存分配要比链表的内存分配难得多;但java系统再一次考虑了所有细节。事实上,一个为串预留空间的一般机制与所有的java对象所需要的一般内存分配机制是差不多的。通常当我们使用串时,串的内存分配问题并不像串第一次出现时那么重要,因为我们经常使用的是串的引用,而不是字符串本身。
分享到:
相关推荐
Java 实现推荐系统 两个字符串 余弦相似度 算法。
运行程序之后输入任意的字符串,将字符串转化成二进制数字字符串,然后利用LZ78算法实现对二进制字符串压缩解压,最后再恢复原来的字符串
关于经典算法--压缩字符串(将字符串内连续重复出现的字符进行压缩),个人的想法
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下: 1. 把每个单词的首字母变为大写。 2. 把数字与字母之间用下划线字符(_)分开,使得更清晰 3. ...
java 用递归实现字符串反转 java 用递归实现字符串反转
用java查找汉字字符串有多重算法,其中Boyer-Moore是基本算法之一。算法简洁,开发容易,是进行搜索引擎开发的重要算法之一。
主要介绍了使用java自带des加密算法实现文件加密和字符串加密的示例,需要的朋友可以参考下
JAVA可逆带秘钥字符串加密算法,JAVA可逆带秘钥字符串加密算法
Java随机字符串生成器,可用于生成随机密码,加密算法密约(AES,RSA等)等场景,支持可选字符范围配置(如只允许数字,只允许字母,只允许数字字母,特殊字符等混合配置),即在选择的字符范围内去实现随机字符串...
本文实例讲述了Java编程实现中英混合字符串数组按首字母排序的方法。分享给大家供大家参考,具体如下: 在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[]...
一个java的字符串冒泡算法 字符串排序 字符串排序 字符串排序
字符串查找KMP算法
将近250行的算法 实现了通过字符串进行加减乘除四则运算 纯通过处理字符串和数组实现 希望能帮助大家: 例如:String input "33+26 77+70"; String result ""; try { result Account...
java 计算字符串相似度
Java Md5字符串加密类代码分享,MD5是一个比较常见的字符串加密算法,在JAVA中应用也相当普遍,这个MD5算法类或许可以直接套用,代码中的关键部分带有注释 ,方便您的使用和学习。需要使用MD5对字符串加密的,那就...
算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...
该资源主要涵盖了Java中字符串的基本操作、常见算法和问题解析,旨在帮助开发者深入理解字符串在Java中的运用,提高解决相关问题的能力。 该压缩文件包含以下内容: 字符串基础:详细介绍了Java中字符串的创建、拼接...
java 算法-字符串翻转实现 题目:反转句子。例如“come here boy”->“boy here come”单词间为空格
List<String> location=new ArrayList(); 一行代码轻松搞定混合排序问题 Collections.sort(location, new SortUtils(true));
[Java]算法练习-字符串移位练习题