Autor Zpráva
sloncz
Profil
Hezký večer přeji, lámu si hlavu s jedním řešením.

Mám řetězec

$pismena = "ABC"; nebo $pismena = "ABB"; atp.

a potřeboval bych nějaké řešení, jak zjistit, jestli se v tom řetězci opakují některé znaky 2x a pokud ano, aby mi to vypsalo i o jaký znak se jedná.

Příklad:
Měl bych řetězec
$pismena = "ACC";
a potřeboval bych, aby mi to v další proměnné, $vysledek, vypsalo písmenko "C", protože to se v daném řetězci o třech znakách vyskytuje 2x.
juriad
Profil
Musí se vyskytovat alespoň dvakrát po sobě, nebo kdekoli? Záleží na velikosti písmen (jedná se o různé znaky?) Co když se opakuje vícekrát? Co vícebytové znaky?
Co očekáváš za výstup pro řetěžec aAxxEEBbADDDDDDEE?
Alphard
Profil
count_chars
sloncz
Profil
Omlouvám se, že jsem nenapsal toho více. Řetězec bude mít VŽDY jen 3 znaky a budou to různé znaky, co klávesnice poskytuje, takže bych potřeboval něco, co dokáže z jakýkoliv tří znaků poznat, jestli se v řetězci nějaký nachází vícekrát, než 1x a také je jedno zda budou dvě stejná písmena po sobě, nebo mezi nimi bude jiné písmeno-.
mimochodec
Profil
sloncz:
Kolikrát je znak v proměnné
..
jestli se v řetězci nějaký nachází vícekrát, než 1x

To není totéž. To první je číslo, to druhé je bool. Tady máš řešení toho prvního, ta druhá možnost se z toho dá relativně snadno udělat.

echo pocitejshody("aac");

function pocitejshody($in) {
  $arr = str_split($in);
  
  $out = 0;
  if ($arr[0] == $arr[1]){$out += 1;}
  if ($arr[1] == $arr[2]){$out += 1;}
  if ($arr[2] == $arr[0]){$out += 1;}
  
  return $out;
}
tiso
Profil
mimochodec: to myslíš vážne?
mimochodec
Profil
tiso:
Zadání se změnilo, můj kód už mu neodpovídá. Předtím jsem do vážně myslel. Speciální funkci přímo na to neznám, délka tři znaky byla daná. Při větší délce bych na to šel úplně jinak, tady mi to připadalo jako škoda času.
Davex
Profil
sloncz:
Co třeba regulárním výrazem?

$pismena = "ADA";

if (preg_match('~(.).*\\1~', $pismena, $matches)) {
  $vysledek = $matches[1];
} else {
  $vysledek = "";
}

echo $vysledek;

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: