Dubletts und Trippletts in einem String finden



  • Hallo!

    Wie kann ich (am besten über eine Zählschleife) die Dubletts (zwei gleiche aufeinander folgende Zeichen) und Tripletts (drei gleiche aufeinander folgende Zeichen) finden?



  • Am besten mit einer Zählschleife jeweils zwei Zeichen vergleichen!?
    Mal ehrlich, was ist das denn für eine ... Frage?



  • Ein Beispiel:

    Sommer = 1 Dublett
    Stalllicht = 1 Ttriplett

    Im Sommer brannte das Stalllicht immer = 3 Dubletts, 1 Triplett.



  • danke für das Beispiel.
    dan kannst du daraus jetzt dein zählschlaufe bauen.
    wenn du das nicht hinkriegst solltest du mal ein tutorial für C/C++ grundlagen durcharbeiten.



  • Hausaufgaben erledigt ?

    String satz="Im Sommer brannte das Stalllicht immer";
    int co,dutr[2]={0,0};
    for(int i=1;i<satz.Length();i++)
    {
       co=0;
       while(i+co<satz.Length()&&satz[i+co]==satz[i+co+1]) co++;
       if(co) dutr[co-1]++;
       i+=co;
    }
    Edit1->Text = dutr[0];
    Edit2->Text = dutr[1];
    


  • AnsiString::Pos sollte einfacher sein



  • noch ein Beispiel:

    Auf der Bestellliste für die Kaffeeernte der Hawaiiinseln befand sich auch ein Teeei.

    😃



  • Christian211 schrieb:

    AnsiString::Pos sollte einfacher sein

    Nö, Pos bringt dir da nichts.
    Was willst du denn Pos zum suchen geben.
    Mit algorithm:count könnte man noch was bauen.



  • Eine (mehr oder weniger spontane) Idee - zähl einfach von deiner aktuellen Position aus, wie oft das aktuelle Zeichen vorkommt (bzw. wo das nächste Zeichen steht, das nicht passt):

    string text;
    for(int i=0;i<text.length();)
    {
      int j=text.find_first_not_of(text[i],i);
      if(j==string::npos) j=text.length();//Sonderregelung letztes Zeichen
      int l=j-i;
    
      switch(l)
      {
      case 1: break;//Einzelzeichen
      case 2: cout<<"Dublett gefunden:"<<text[i]<<" an Position "<<i<<endl;
      case 3: cout<<"Triplett gefunden:"<<text[i]<<" an Position "<<i<<endl;
      default:cout<<l<<"-Sequenz gefunden:"<<text[i]<<" an Position "<<i<<endl;
      }
      i=j;
    }
    

Anmelden zum Antworten