2 zhw00001 zhw00001 于 2016.04.15 16:54 提问

java中比较未知字符串所包好的内容

比如说我有两个词。中国 和国人,(这个字符串是未知的,我只是举例),怎么判断这两个字符串中
都包含相同的内容,在上述例子中相同的内容就是“国”?最好不用数组,求大神指导!

7个回答

baidu_23086307
baidu_23086307   2016.04.16 10:00

public static int[][] LCS(String str1, String str2) {
int[][] opt = new int[str2.length() + 1][str1.length() + 1];

    for (int i = 0; i <= str2.length(); i++) {
        opt[i][0] = 0;
    }

    for (int j = 0; j <= str1.length(); j++) {
        opt[0][j] = 0;
    }

    for (int j = 1; j <= str1.length(); j++) {
        for (int i = 1; i <= str2.length(); i++) {
            if (str2.charAt(i-1) == str1.charAt(j-1)) {
                opt[i][j] = opt[i-1][j-1] + 1;
            } else {
                opt[i][j] = ( opt[i-1][j] >= opt[i][j-1] ? opt[i-1][j] : opt[i][j-1]);
            }
        }
    }

    return opt;
}

public static void print(int[][] opt, String X, String Y, int i, int j) {

    if (i == 0 || j == 0) {
        return;
    }

    if (X.charAt(i - 1) == Y.charAt(j - 1)) {
                   System.out.print(X.charAt(i - 1));   
                   print(opt, X, Y, i - 1, j - 1);  // don't put this line before the upper line. Otherwise, the order is wrong.
            }else if (opt[i - 1][j] >= opt[i][j]) {
                   print(opt, X, Y, i - 1, j);
            } else {
                   print(opt, X, Y, i, j - 1);}

}

xiaoyao880609
xiaoyao880609   2016.04.15 16:59

遍历一个词的每个字符,判断当前遍历的字符另一个词是否包含。

zhw00001
zhw00001 我用的是hashmap来存储字符串的,怎么遍历,转为数组么??
2 年多之前 回复
CSDNXIAON
CSDNXIAON   2016.04.15 17:02

java中的String为什么可以使用==比较字符串内容?
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.04.15 17:19

这就是模式匹配啊,Java的string类提供了模式匹配的函数indexOf的。

asdf_606
asdf_606   2016.04.15 18:03

hashmap要遍历所有的键,比较所有的值,算法复杂度n*m, 好像没有其他的办法了

HFUTJungle
HFUTJungle   2016.04.15 22:21

在编码是统一的情况下,可以考虑判断String indexOf 是否为 -1;为-1就是没有。

caozhy
caozhy   Ds   Rxr 2016.04.15 23:38
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java中的String为什么可以使用==比较字符串内容?
java中的String为什么可以使用==比较字符串内容? 一句话概括: java中的String是final类,final类是共享数据的,而java中==比较的是内存地址,而final类的String相同字符串,指向的是同一个地址! 详细: “==”在任何时候都是比较地址,这种比较永远不会被覆盖。 java中的String类是final类,final修饰类,被final
Java中字符串比较
熟悉C++的人对于两个字符串比较的代码一定很了解: (string1==string2) 但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false Java中必须使用string1.equals(string2)来进行判断 补充 如果: string s1=new String("Hello"); string s2=new String("Hello"); 则(s1==s2)=
判断两个字符串是否为包含关系
题目描述: 假设这有一个各种字母组成的字符串A,和另外一个字符串B,字符串里B的字母数相对少一些。什么方法能最快的查出所有小字符串B里的字母在大字符串A里都有? 比如,如果是下面两个字符串: String 1: ABCDEFGHLMNOPQRS String 2: DCGSRQPO 答案是true,所有在string2里的字母string1也都有。 思路总结如下: 1.定义最小的26
java实现两个字符串的比较
compareTo方法是比较两个字符串的词典顺序  也就是在字典中的顺序,比如“abcd”在“acdb”前面  另外你应该先把字符串转变成int,然后再比较  可以用下面的方法比较两个整数  public int max(int m,int n)  {  if(m>n)  return m;  else if(n>m)  return n;  else return 0;//相
Java字符串String:equals方法和==的区别
equals方法和==的区别   首先大家知道,String既可以作为一个对象来使用,又可以作为一个基本类型来使用。这里指的作为一个基本类型来使用只是指使用方法上的,比如String s = "Hello",它的使用方法如同基本类型int一样,比如int i = 1;,而作为一个对象来使用,则是指通过new关键字来创建一个新对象,比如String s = new String("Hel
java 把一个未知长度的字符串中的某个子字符串全部改成另一个字符串
package cn.nrsc.test; /* * 功能:把一个未知长度的字符串中的某个子字符串全部改成另一个字符串, */ import java.util.ArrayList; public class gaibian_ZhuBaJietoZhuWuNeng { public static void main(String[] args) { String str = "猪八
Java中比较两个字符串是否相等的问题
Java中,关于比较两个字符串是否相等的问题,经常会出现。下面将分析使用 ==(注意:Java中 = 是赋值运算符,== 是比较是否相等) 和 equals()方法 来比较两个字符串相等的区别:  简单一句话,==比较的是两个字符串的地址是否为相等(同一个地址),equals()方法比较的是两个字符串对象的内容是否相同(当然,若两个字符串引用同一个地址,使用equals()比较也返回true)。 ...
java 字符串比较(比较指定字符串中是否包含指定字符)
java字符串比较可以用.contains()方法和.indexOf()方法,其中.contains()方法是对.indexOf()的封装,所以性能上肯定是.indexOf()要快些. .contains()方法源码如下:  /**      * Returns true if and only if this string contains the specified      * se
Java中字符串比较相等问题
Java中String比较equals()方法浅析
运用递归判断两字符串是否相同
给出了递归判断字符串是否相等的代码,并简单介绍了substr方法。