2

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

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

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

"overflow"将输出为8,与"Exchange"应该输出相同8

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

4

3 回答 3

1

一些有用的方法:

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

于 2012-04-13T22:45:25.830 回答
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();
}
于 2012-04-13T22:55:23.453 回答
0

据我了解,您想从两个字符串中删除公共元素:如果是这样,则解决方案: String str1 = "Stack Overflow"; 字符串 str2 = "堆栈交换";

    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;
于 2018-09-12T04:11:35.257 回答