2017-08-13 382 views
-3

我正在尋找一種方法來比較兩個字符串彼此的字符。在Java中比較兩個字符串,並顯示字符差異

它應該顯示是否有其他字符不出現在兩個字符串中。

有人有解決方案嗎?

注:

聽着夥計們,這個話題你已經證明了我是不是我想要的東西:

for(int j=0; j < min; j++) { 
      s1 = w1.substring(j,j+1); 
      s2 = w2.substring(j,j+1); 

      if (!s1.equalsIgnoreCase(s2)){ 
      counter++;  

      } 
     } 

這隻看起來連續的不同之處。但我想知道這兩個字符串之間是否存在差異。

So **abc** and **cab** should count as a hit 
+0

當然我可以用foreach循環做到這一點。但那些效率很低 – Azrion

+0

效率低下?以什麼方式? –

+0

例如,如果要比較2個字符串,每個字符串包含1000個字符,循環甚至不會運行 – Azrion

回答

1

我想你想要的是顯示2個字符串具有相同的字母和相同數量的每個字母。使用2個哈希集,其中鍵是字符,值是字符串中的出現次數。您將爲每個字符串都有一個哈希集,然後遍歷字符串將字符添加到集並比較以查看集是否相等。

+0

是的,終於讓我對了。非常感謝你 – Azrion

0

把它們變成charArrays並添加差異爲空字符串作爲通過他們循環掃描,例如

String a = "abc"; 
char[] aa = a.toCharArray(); 
String b = "cba"; 
char[] bb = b.toCharArray(); 
String dif; 

public void differ() { 
    for(int i = 0; i < aa.length - 1; i++) { 
    if(!aa[i].equals(bb[i])) { 
     dif += aa[i]; 
    } 
    } 
} 

我相信運行不同()將返回「交流」,因爲它們都具有b在中間。這是你想要的嗎?

+0

沒有。請參閱mmohitcc的答案 – Azrion