展会信息港展会大全

JAVA比较两个字符串大小 查找相同字符串
来源:互联网   发布日期:2016-01-19 12:32:21   浏览:7108次  

导读:作为一个初学Java的小菜鸟,每天过着3点一线的生活,每天12个小时的学习虽然辛苦,但是收获确实巨大的,每次编出一个像样点的程序,自己都会觉得非 常的开心,下面就给大家分享一下,我在Java学习中遇到的困难和 ...

作为一个初学Java的小菜鸟,每天过着3点一线的生活,每天12个小时的学习虽然辛苦,但是收获确实巨大的,每次编出一个像样点的程序,自己都会觉得非 常的开心,下面就给大家分享一下,我在Java学习中遇到的困难和解决问题的方法。

如题,本次小子在做题库时候遇到了这个问题,思考了好一会才有所想法,后来修修改改,经过一个多小时才把这题给搞定(不得不说自己的水平很菜啊,不过 我们才刚学到数组,字符串是自己钻研的)。

这个题目最大的困难之处在于如何找到所有相同的字符串,然后进行比较,所以解决这个问题的思路就是如下这样。

首先,要比较两个字符串的大小,通过大的字符串去indexof小的字符串,这样才能更精确吗,相信这个步骤大家都会,我就不做赘述了。

然后,我们要通过双循环来查找相同的字符串,在做这个的时候,首先我们先查下Java的API,String类型里面有一个 substring(int beginIndex, int endIndex),调用这个函数,会返回一个新字符串,它是此字符串的一个子字符串。,学会了这个方法,我们就不难写出以下代码。

String[] str = new String[50]; //新建一个字符串数组,这个可以根据你输入的字符长度进行改变

int n = 0;

for (int i = 0; i < s2.length(); i++) {

for (int j = i + 1; j <= s2.length(); j++) {

if (s1.indexOf(s2.substring(i, j)) != -1) { //循环遍历相同的字符串

str[n] = s2.substring(i, j);

n++;

}

}

}

此段代码中if (s1.indexOf(s2.substring(i, j)) != -1)为核心代码,因为本文面向的都是和我一样的小菜,所以就和大家具体说说,substirng 不断通过双循环返回各个长度的s2的子字符串,s1通过indexof的方法去查找s1中有没有和返回的s2的子字符串相同的字符串,如果找到相同的就把 它放到我们已经建好的字符串数组str中。

然后我们把找到的相同字符串进行长度的比较,这个相信给小菜也都会,代码如下:

int maxLen = str[0].length(); //假设第一个值为最大值

for (int i = 1; i < n; i++) {

if (str[i].length() >= maxLen)

maxLen = str[i].length();

}

通过字符串长度的比较,这样我们就可以把最大的相同字符串给找出来了,登登登~!~!~!

剩下的就是输出了,同样把代码贴出来。

for (int i = 0; i < n; i++) {

if (str[i].length() == maxLen)

System.out.println(str[i]);

}

如果各位觉得我赘述的过多,想要直接要代码的话,本小子同样乐于分享,把完整的代码贴给大家,(已经实现过了,可以直接用哦~)嘿嘿,本篇文章是本小 子第一次发表技术类的帖子,虽然题目很简单,但是乐于分享才是我们程序员极客精神的体现吗~如有不足,请各位看官尽情提出埃

完整代码:

public class Test {

public static void main(String[] args) {

Scanner in=new Scanner(System.in);

String a=in.next();

String b=in.next();

subStr(a, b);

}

public static void subStr(String s1, String s2) {

String[] str = new String[50];

int n = 0;

for (int i = 0; i < s2.length(); i++) {

for (int j = i + 1; j <= s2.length(); j++) {

if (s1.indexOf(s2.substring(i, j)) != -1) {

str[n] = s2.substring(i, j);

n++;

}

}

}

int maxLen = str[0].length();

for (int i = 1; i < n; i++) {

if (str[i].length() >= maxLen)

maxLen = str[i].length();

}

for (int i = 0; i < n; i++) {

if (str[i].length() == maxLen)

System.out.println(str[i]);

}

}

}

赞助本站

人工智能实验室

相关热词: 字符串 JAVA

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港