PHP版 判断两个字符串为互换词语

原创 2015年11月20日 12:21:16

指定两个字符串,通过程序的判断两个字符串是否互为变型词。

    $str = 'abcd';
    $compare_str = 'cdab';
    compare_func($str,$compare_str); //此时返回true
    //或
    $str = '123a';
    $str = '123';
    compare_func($str,$compare_str); //此时返回false

解题思路:

  • 如果两个字串是互为变型词,那么字串长度是一致的。

  • 遍历第一个字串的每个字符获取其Ascii做下标,统计出现次数,存入Ascii数组。再遍历第二个字串中每个字符的Ascii做下标,直接从Ascii数组中减去出现次数即可。

function compare_func($str,$compare_str)
{
    $strl = strlen($str);
    $compare_strl = strlen($compare_str);
    // 若两个字串的长度等于零或不一致返回false
    if ($strl + $compare_strl === 0 || $strl !== $compare_strl)
        return false;
    // 存储出现过的字符
    $ascii = [];
    for ($i = 0;$i < $strl;$i++) {
        // 以每个字符的Ascii码作为下标
        $ascii[ord($str[$i])] ++;
    }
    for ($i = 0;$i < $strl;$i++) {
        // 这里如果已经等于零了,再自减必然为负数,那么直接返回false
        if ( $ascii[ord($compare_str[$i])] -- == 0 ){
            return false;
        }
    }
    return true;
}

本文参考 “程序员代码面试指南-左程云” 一书改写和分享

版权声明:本文为博主原创文章,未经博主允许不得转载。

Php中判断一个字符串为空

//如果$site为空,则$site等于 2y 1. 6mJH^   if ( true === empty( $site)){ 1tf@Bx    $site = http://www....
  • fengkuanghun
  • fengkuanghun
  • 2009年04月19日 11:26
  • 8287

php判断是字符是否为数字

is_bool();//判断是否为布尔型    is_float(); //判断是否为浮点型    is_int(); //判断是否为整型    is_numeric(); //判断是否为数值型...
  • u014552756
  • u014552756
  • 2015年12月14日 15:12
  • 1606

php中判断是否为多个空格字符串的方法

在php中判断变量是否为空可以用empty, 判断变量是否已经声明则可以使用isset() 常见的判断方法如    $a="xxxx";    if($a){         echo "有...
  • u014062332
  • u014062332
  • 2014年03月28日 13:24
  • 2884

如何确定中文字符串的相似度

如何确定中文字符串的相似度 作者:肖波个人博客:http://blog.csdn.net/eagletEmail:blog.eaglet@gmail.com2007/4 南京 摘要在数据挖掘的研究中,...
  • eaglet
  • eaglet
  • 2007年04月28日 15:22
  • 4678

php键值互换时走的一个弯路

需求: 用户输入年月:2015-6 输出:当月的所有天数,并且对应的值为0 我第一次是这样的:$time='2015-6'; $daynum=date('t',strtotime($time));//...
  • u010703523
  • u010703523
  • 2015年06月11日 17:19
  • 1324

php函数判断给定的两个日期的关系

php函数判断给定的两个日期的关系 对date日期函数的活用 代码如下:
  • json_ligege
  • json_ligege
  • 2016年06月30日 11:04
  • 639

【php】正则验证字符串是否为数字

方法一: php中利用正则表达式验证字符串是否为数字一件非常容易的事情,最主要的是如何写好正则表达式以及掌握正则表达式的写法,在此利用正则表达式的方式来列举一下判断数字的方法。 ...
  • lst8696
  • lst8696
  • 2013年12月19日 21:54
  • 1277

php判断字符串是否为全中文

一,判断全是中文     $str="'324是";     if(!eregi("[^\x80-\xff]","$str")){     echo "全是中文";     }else{  ...
  • qq_31879707
  • qq_31879707
  • 2017年02月08日 17:34
  • 1257

php教程判断字符串是否大小写字母函数

提供一款简单实例的php教程判断大小写字母函数   function checkcase($str){              if(preg_match('/^[a-z]+$/', $str)...
  • youaregoo
  • youaregoo
  • 2012年08月16日 15:35
  • 3955

PHP 比较两个字符串的相似度

  • shaerdong
  • shaerdong
  • 2015年10月23日 20:44
  • 1677
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP版 判断两个字符串为互换词语
举报原因:
原因补充:

(最多只允许输入30个字)