PDA

View Full Version : سوال: تشخیص وجود حرف تکراری



alinwp
یک شنبه 10 اسفند 1393, 21:05 عصر
درود
دوستان تابعی میخواستم که اگر در یک رشته حرف تکراری وجود داشت مقدار FALSE و اگر تمام حروف یکتا بون مقدار TRUE رو برگشت بده و به حروف بزرگ و کوچیک هم حساس باشه

prans.info
یک شنبه 10 اسفند 1393, 21:33 عصر
function tekrar ($text){
$while = mb_strlen ($text,'UTF-8');
$num = 0;
$array = array ();
while ($num<$while){
$array []= mb_substr ($text,$num,1,'UTF-8');
$num++;
}
$unique = array_unique ($array);
if($unique==$array){
return true;
}
return false;
}
if(tekrar ('1234')){
echo 'عدم تکرار';
}else{
echo 'وجود تکرار';
}

داغه داغه :لبخند:

lastone
یک شنبه 10 اسفند 1393, 21:56 عصر
با سلام


function tekrar($string){
return (count(str_split($string))==count(array_unique(str _split($string))))? true:false;
}

bagherok
یک شنبه 10 اسفند 1393, 22:53 عصر
<?php
function mb_unique_chars($input) {
$l = mb_strlen($input, 'UTF-8');
$unique = array();
for($i = 0; $i < $l; $i++) {
$char = mb_substr($input, $i, 1, 'UTF-8');
if(array_key_exists($char, $unique))
return 1;
$unique[$char] = 1;
}

return 0;
}
$input = "تشخیص وجود حرف تکراری";
echo mb_unique_chars($input);
?>

prans.info
یک شنبه 10 اسفند 1393, 23:00 عصر
<?php
function mb_unique_chars($input) {
$l = mb_strlen($input, 'UTF-8');
$unique = array();
for($i = 0; $i < $l; $i++) {
$char = mb_substr($input, $i, 1, 'UTF-8');
if(array_key_exists($char, $unique))
return 1;
$unique[$char] = 1;
}

return 0;
}
$input = "تشخیص وجود حرف تکراری";
echo mb_unique_chars($input);
?>





این روش به ذهن من هم رسید ولی فکر کنم استفاده از array_unique در آخر کار بهتر از چک کردن در هر بار اجرا باشه .
شما این رو در یک متن طولانی در نظر بگیرید ...
البته ظاهرا استارتر قصد دارند سیستمی برای چک کردن ضریب امنیت پسورد درست کنند که در این حالت الگوریتم شما بهتره

bagherok
یک شنبه 10 اسفند 1393, 23:13 عصر
این روش به ذهن من هم رسید ولی فکر کنم استفاده از array_unique در آخر کار بهتر از چک کردن در هر بار اجرا باشه .
شما این رو در یک متن طولانی در نظر بگیرید ...
البته ظاهرا استارتر قصد دارند سیستمی برای چک کردن ضریب امنیت پسورد درست کنند که در این حالت الگوریتم شما بهتره


خب شما چه متن (جمله) طولانی رو سراغ دارید که تمام حروفش غیر تکراری باشه.
خب تو همون چند کاراکتر اول مشخص میشه
اگه تکراری وجود داشته باشه نیازی به ادامه کار و مقایسه نیست.
مثلا دو کاراکتر اول یکسان باشند.

prans.info
یک شنبه 10 اسفند 1393, 23:44 عصر
خب شما چه متن (جمله) طولانی رو سراغ دارید که تمام حروفش غیر تکراری باشه.
خب تو همون چند کاراکتر اول مشخص میشه
اگه تکراری وجود داشته باشه نیازی به ادامه کار و مقایسه نیست.
مثلا دو کاراکتر اول یکسان باشند.
درسته
به هر حال در کل رمز از 255 کاراکتر که بیشتر نیست و تفاوت چندانی نداره و در کل تابع شما بهتره

***BiDaK***
دوشنبه 11 اسفند 1393, 02:03 صبح
function is_unique($string)
{
if (max(array_count_values(preg_split('//u', $string, -1, PREG_SPLIT_NO_EMPTY))) > 1)
{
return false;
}
return true;
}


$string = 'تشخیص وجود حرف تکراری';
if (is_unique($string))
{
echo 'unique';
}

MMSHFE
دوشنبه 11 اسفند 1393, 10:06 صبح
function isUnique($string) {
return (max(array_count_values(str_split($string))) == 1);
}

var_dump(isUnique('abcd')); // output: bool(true)
var_dump(isUnique('abcda')); // output: bool(false)