2016-05-01 9 views
-3

Ich arbeite an diesem College-Projekt, das einen Hybrid-Algorithmus mit Genetic Algo und Bienen-Kolonie-Optimierung entwickelt. Ich stecke an einem kleinen Problem fest.Einfaches Java-Programm zum Verknüpfen zweier Strings mit überlappenden

Nehmen wir an, wir haben zwei Strings:

String x="001100110011"; 

String y="001101110110"; 

Ich brauche eine neue Zeichenfolge zu bilden, die sie durch die Überlagerung beider x und y verbindet.

Ich habe versucht, einen Algorithmus zu verwenden, den ich hier auf StackOverflow fand, konnte aber nicht das gewünschte Ergebnis erhalten.

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); 
    } 

Mein Ziel ist es auf Verketten von Strings zu halten, bis ich 111111111111. erreichen Die Länge bei 12 befestigt ist

+6

Warum verwenden Sie einen String, um 12 Bits darzustellen? Verwenden Sie BitSet, das ist viel logischer, effizienter und hat die Methode, die Sie benötigen ('oder()'). –

+1

Sie könnten auch ein primitives wie 'short' oder' int' verwenden und die bitweise Operation '|' – Aaron

+0

verwenden. Ich muss es so einfach wie möglich machen, indem ich nur die Sachen benutze, die wir bisher gelernt haben. Und danke ein paar Kumpel :) Ich kann OR-Operator verwenden. –

Antwort

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

} 

das funktioniert für das, was Sie wollen, um Ihren Code zu tun, und sie bezieht sich meistens.

(edit: Sie müssen möglicherweise die Zeichenfolge formatiert werden alle 12 Stellen, um sicherzustellen, gibt es)

+0

Dies ist ein bisschen verdreht und ein Weg zu gehen, nur wenn Sie aus irgendeinem Grund mit den Strings stecken bleiben. –

+0

@AlexErohin Ich nahm an, dass er hier, wie er oben erwähnt hat, bei dem bleiben muss, was er weiß. – user2494817

+0

Können Sie "ein bisschen verdreht" näher erläutern? Was hast du getan? – barlop

-1

Wenn Ihr lenth auf 12 festgelegt ist, und alles, was Sie tun müssen, ist, oder die beiden Saiten dann gehen Sie einfach:

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; 
} 

aber warum sollten Sie Bits in einem String behalten?

+0

Bitte verwenden Sie mindestens einen StringBuilder. –

+0

funktioniert wie ein Charme. Genau das, was ich wollte. :) –

+0

das ist eine Menge unnötiger Klammern. Sicherlich gewinnt das if sonst nicht mehr Klarheit aus den überflüssigen Klammern – barlop

Verwandte Themen