2016-05-01 70 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