从长字符串中获取最小的匹配字符串

时间:2014-03-11 08:22:36

标签: java string substring

假设我有一个字符串

  interpreter, interprete, interpret

现在我要做的是从上面的字符串中获取必须为:

的最小匹配字符串
  interpret

是否有可能使用Java,如果有人可以帮我解决这个问题,谢谢

4 个答案:

答案 0 :(得分:0)

如果我找到你,你想要一个包含目标字符串s的输入字符串t="interpret"中最短的

首先,将字符串拆分为单词w,例如,使用s.split("\\s*,\\s*"),然后在每个字符串w.contains(t)上使用w来检查它是否包含您看起来的单词对于。选择contains方法返回true的最短字符串。

答案 1 :(得分:0)

看看这个......

public static void main(String[] ar)
    {
        List<String> all=new LinkedList<String>();
        all.add("interpreter");
        all.add("interprete");
        all.add("interpret");
        String small="";
        small=all.get(0);
        for (String string : all) {
            if(small.contains(string))
            {
                small=string;
            }
        }
        System.out.println(small);
    }

让我知道,它是否满足您的要求???

// ----------------- Edited One --------------------------

public static void main(String[] ar)
{
List<String> all=new LinkedList<String>();
Set<String> result=new LinkedHashSet<String>();
all.add("interpreter");
all.add("interprete");
all.add("interpret");
all.add("developed");
all.add("develops");
String small="";

for(int i=0;i<all.size();i++)
{
    small=all.get(i);
    for(int j=i;j<all.size();j++)
    {
        if(small.contains(all.get(j)))
            {
                small=all.get(j);
            }
    }
    result.add(small);
}
for (String string : result) {
    System.out.println(string);
}
}

答案 2 :(得分:0)

you need to compare all char one by one of all  string and a array of boolean flag maintain 
for every pair of string then check out all Boolean array similarity(length) and then substring 
of any string from that length
i hope this will help    

答案 3 :(得分:0)

您正在寻找的是Java的lemmatizer / steamer。

其中有一些(我没有使用过),但你可能想搜索/尝试其中一些:

Snowball

Lemamatization

你应该测试它们中的每一个,因为例如一些(如果是雪球)会这样做:

 Community     
 Communities  --> Communiti // this is obviously wrong