PHP :: Aufgabe #356

1 Lösung Lösung öffentlich

String abwechselnd neu anordnen

Anfänger - PHP von JKooP - 15.05.2021 um 10:48 Uhr
Gegeben ist ein String (Text) bestehend aus Kleinbuchstaben und Ziffern.
Ziel ist es diesen String neu anzuordnen, sodass sich Kleinbuchstaben und Ziffern abwechseln.
D.h., auf einen Kleinbuchstaben darf kein Kleinbuchstabe und auf eine Ziffer keine weitere Ziffer folgen.
Die Reihenfolge der Zeichen-Gruppen (Kleinbuchstaben bzw. Ziffern) darf nicht verändert werden.
Sind beide Zeichengruppen gleich lang, ist es egal mit welchem Zeichen begonnen wird.
Gibt es keine Lösung, soll ein Leer-String zurückgegeben werden.

Beispiele:
s = "train1234"
Lösung: "t1r2a3i4n"

s = "1234567"
Lösung: "", da nur Ziffern

s = "abcdefg"
Lösung: "", da nur Buchstaben

s = "abcdef123"
Lösung: "", nicht abwechselnd möglich

s = "abcd1234"
Lösung: "a1b2c3d4" oder "1a2b3c4d"

Schreibe eine Methode/Funktion, die obige Aufgabenstellung umsetzt.

Viel Spaß

Lösungen:

vote_ok
von Ryuu (120 Punkte) - 26.05.2021 um 09:49 Uhr
Quellcode ausblenden PHP-Code
<?php

	$input = "train1234";					//Parameter
	$endString = "";
	$numbersCount = 0;
	$charsCount = 0;
	$numbersArray = array("");
	$charsArray = array("");
	$y= 1;
	$w= 0;
	$z = 0;
	$x = 0;
	$rueck = "";

		for($i=0; $i< strlen($input);$i++){			//Buchstaben und Zahlen in einen Zwei Arrays packen

			if(is_numeric($input[$i])== true){    //Alle Zahlen in ein Zahlen Array packen
	
			
				$numbersCount += 1;
				$numbersArray[$z] = $input[$i];
				$z += 1;
			
			}
			else{								//Alle Buchstaben in ein Buchstaben Array packen
			
				$charsCount += 1;
				$charsArray[$x] = $input[$i];
				$x += 1;
			
			}
		}

		if($numbersCount-2>=$charsCount OR $charsCount-2>=$numbersCount){  // Bei einer Mengen Differenz von 2 muss ein "" String zurückgegeben werden
			return $rueck;		
		}
		else{
			$endString = $input[0];
		
		for($i=0; $i< strlen($input)-1;$i++){	
		
			if(is_numeric($endString[$i]) == true ){   //Abfrage ob der zuvorgehende Char eine Zahl ist oder nicht 
												//Bei JA wird ein Buchstabe addiert
				$endString .= $charsArray[$y];
				$y += 1;
			}
			else{										//Bei Nein wird eine Zahl an den String hinten dran gehängt
		     
				$endString .= $numbersArray[$w];
				$w += 1;  
			}
		}
		echo $endString;
		} 
?>
2019215

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.