比较并删除java中两个字符串中的相同字符,然后将剩余字符作为数字输出

时间:2012-04-13 22:34:58

标签: java string

假设我有2个不同的用户输入名称。例如:

firstName = "Stack Overflow"
secondName = "Stack Exchange"

我想要做的是比较它们,这意味着将删除单词"Stack",然后剩余的字符串字符将作为数字输出。

"overflow"将输出为8,与输出"Exchange"的{​​{1}}相同。

有没有可以使用的方法?我只是一个新手,所以我很欣赏非8方法或一些高级Java方法。

3 个答案:

答案 0 :(得分:2)

一些有用的方法:

对不同字符长度的迭代会给你一个数字,但是我不确定你是想要输出更长的String还是更短的String。 (无论哪种情况,使用循环都会有所帮助。)

答案 1 :(得分:1)

您可以尝试迭代两个字符串中的字符,逐步比较它们,直到找到不同的字符。此时,您只需返回字符串的长度减去公共前缀中的字符数。

尝试这样的事情(代码没有经过测试,你可能需要做一些调整 - 这也只返回第一个参数字符串的长度减去前缀):

public int stringLength( String s1, String s2 )
{
  for ( int i = 0 ; i < Math.min( s1.length(), s2.length() ) ; i++ )
  {
    if ( s1.charAt( i ) != s2.charAt( i )
    {
      return s1.length() - i;
    }
  }

  return s1.length();
}

答案 2 :(得分:0)

据我了解,您想从两个字符串中删除“公共元素”:如果是,这是解决方案:         字符串str1 =“堆栈溢出”;         字符串str2 =“ Stack Exchange”;

    ArrayList arr1 = new ArrayList();
    ArrayList arr2 = new ArrayList();
        for(int i = 0; i < str1.length(); i++) {
            arr1.add(str1.charAt(i));
        }


        for(int i = 0; i < str2.length(); i++) {
            arr2.add(str2.charAt(i));
        }
        arr1.retainAll(arr1);

     java.util.List<ArrayList> chars = Arrays. asList(arr1);
     String str = chars.toString().replace(",","");
 return str;