返回两个字符串不同的数组位置

时间:2015-11-18 15:38:12

标签: java

我试图检查数组中两个字符串的位置是否不同。例如,如果我有字符串apple和字符串appendix,那么两个字符串在i = 3的位置是不同的。

如何使用Java检查?

代码

 //The first string is s.
    char[] cArray = s.toCharArray();
    // The seond string is root.edge.
    char[] rootEdgeCharacter = root.edge.toCharArray();

    for(int i=0; i<cArray.length; i++  ){
        for(int j=0; j<rootEdgeCharacter.length; j++){
            if(cArray[i]== rootEdgeCharacter[j]){
                System.out.println("The String are different where i =" + i);

            }
        }
    }   

2 个答案:

答案 0 :(得分:5)

不要使用.toCharArray(),它会不必要地创建一个 new 字符数组。改为使用.charAt()。

更重要的是,你的代码不会走向数组&#34;并行&#34;:你在索引0,0,然后是1,0,然后是3等等迭代。这不是你想要的。

这是一个解决方案;请注意,对于不等长的字符串,它将返回较小的长度,并且两个字符串相等,它返回-1:

public static int findDifferingIndex(final String s1, final String s2)
{
    final int len1 = s1.length();
    final int len2 = s2.length();
    final int len = Math.min(len1, len2);

    for (int index = 0; index < len; index++)
        if (s1.charAt(index) != s2.charAt(index))
            return index;

    // Check the length of both strings; if they are equal, return -1.
    // Otherwise return the length `len`.
    return len1 == len2 ? -1 : len;
}

答案 1 :(得分:1)

你可以做的是遍历数组并一次获得2个字符串。

使用getDiff方法检查这些差异。

方法查找字符,直到找到不匹配。

a p p l e
a p p l y
        ^

逐个字符检查,直到发现不匹配。

String [] arr = {"apple", "apply", "application", "apraisal"};

for(int i = 0; i < arr.length; ++i)
{
 for(int j = i + 1; j < arr.length; ++j)
  {
    System.out.println(arr[i] + " " + arr[j] + " " + getDiff(arr[i], arr[j]));
  }
}

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