zoukankan      html  css  js  c++  java
  • 比较字符串

    比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是大写字母

    样例

    给出 A = "ABCD" B = "ACD",返回 true

    给出 A = "ABCD" B = "AABC", 返回 false

    注意

    在 A 中出现的 B 字符串里的字符不需要连续或者有序。

     1 <?php
     2 /**
     3  * 比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是大写字母
     4  */
     5 
     6 /**
     7  * 复杂解法:
     8  * 1.将两字符串s, sub转换为字符数组,并对字符数组进行排序,得到有序的字符数组;
     9  * 2.利用两根指针查找两字符数组中相同的字符,并记录相同字符的长度为length; 若长度length与字符串sub的长度相等,则返回true, 否则返回false;
    10  */
    11  
    12 /**
    13  * 简单解法:($s:主串 $sub:子串 返回true/false)
    14  * 思路:
    15  *     1.大写字母只有26个;
    16  *   2.定义一个,以A-Z为key值的数组$arr,初始值均为0;
    17  *   3.循环字符串s, $arr[$s[$i]]++;
    18  *   4.循环字符串sub, $arr[$sub[$i]]--; 如果$arr[$sub[$i]]<0, 退出循环返回false, 否则返回true;
    19  */
    20 function comparision($s, $sub)
    21 {
    22     $len1 = strlen($s);
    23     $len2 = strlen($sub);
    24     
    25     if(0 == $len1 || 0 == $len2 || $len1 < $len2)
    26     {
    27         return false;
    28     }
    29     
    30     $key = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
    31     $arr = array_fill_keys($key, 0);
    32     for($i=0; $i<$len1; ++$i)
    33     {
    34         $arr[$s[$i]]++;
    35     }
    36     
    37     for($i=0; $i<$len2; ++$i)
    38     {
    39         $arr[$sub[$i]]--;
    40         if($arr[$sub[$i]] < 0)
    41         {
    42             return false;
    43         }
    44     }
    45     
    46     return true;
    47 }
    48 //存在
    49 $s1 = "ABCD";
    50 $s2 = "ACD";
    51 $res = comparision($s1, $s2);
    52 var_dump($res);
    53 //不存在
    54 $s1 = "ABCD";
    55 $s2 = "ACDE";
    56 $res = comparision($s1, $s2);
    57 var_dump($res);
  • 相关阅读:
    【翻译】Longest Palindromic Substring 最长回文子串
    java三大框架学习总结(1)
    select XXX into 和 Insert into XXX select
    在WinForm编程中犯的一些错误
    自定义类型数组排序的两种实现方式
    C# 释放非托管资源
    在已创建的DataTable对象中添加在首列一列
    WinForm编程时窗体设计器中ComboBox控件大小的设置
    php处理序列化jQuery serializeArray数据
    谈谈对程序员的培养
  • 原文地址:https://www.cnblogs.com/573583868wuy/p/8811259.html
Copyright © 2011-2022 走看看