2016-05-01 63 views
-3

我正在開發一個使用遺傳算法和蜜蜂羣優化開發混合算法的大學項目。我陷入了一個小問題。簡單的Java程序連接兩個字符串重疊

讓我們假設我們有兩個字符串:

String x="001100110011"; 

String y="001101110110"; 

我需要形成疊加它們組合x和y的新字符串。

String out="001101110111"; 

我嘗試使用我在StackOverflow中找到的算法,但無法獲得所需的結果。

public String docat(String f, String s) { 
     if (!f.contains(s.substring(0,1))) 
      return f + s; 
     int idx = s.length(); 
     try { 
      while (!f.endsWith(s.substring(0, idx--))) ; 
     } catch (Exception e) { } 
     return f + s.substring(idx + 1); 
    } 

我的目標是保持在連接字符串,直到我達到111111111111.長度固定爲12

+6

爲什麼你用一個字符串來表示12位?使用BitSet,邏輯更合理,效率更高,並且有你需要的方法('或()')。 –

+1

您也可以使用像'short'或'int'這樣的原語並使用按位操作'|' – Aaron

+0

我必須儘可能簡單地使用我們已經學過的東西。並感謝噸伴侶:)我可以使用OR運算符。 –

回答

1
public String doIt(String x, String y) 
{ 
    return Integer.toBinaryString(Integer.parseInt(x, 2) | Integer.parseInt(y, 2)); 

} 

這適用於你的目標是做什麼,主要是涉及到你的代碼。

(編輯:您可能需要格式化字符串,以確保所有12位在那裏)

+0

這是有點扭曲,只有當你出於某種原因被困在字符串中時纔會走。 –

+0

@AlexErohin我假設在這裏,正如他在上面提到的,他必須堅持他所知道的。 – user2494817

+0

你能否詳細說明「有點扭曲」?你做了什麼? – barlop

-1

如果您lenth固定爲12,和所有你需要做的就是或兩個字符串 然後只是去:

String orStr (String s1, String s1) 
{ 
    String result = ""; 
    for (int i=0; i<12; ++i) 
    { 
     if (s1.charAt(i)=='1' || s2.charAt(i)=='1') 
     { 
      result += "1"; 
     } else { 
      result +="0"; 
     } 
    } 
    return result; 
} 

但爲什麼你應該保持在一個字符串位?

+0

請至少使用一個StringBuilder。 –

+0

工程就像一個魅力。正是我想要的。 :) –

+0

這是很多不必要的大括號。當然,如果其他人沒有從多餘的括號中獲得更多的清晰度 – barlop