【PHP】给两个字符串返回字符串按排序出两个字符串的字符de多种解法

简介: 问题描述给出两个字符串s1和s2,两个字符串仅包含a-z,返回一个排序后的字符串,包含这两个字符串的内容,每个字母只出现一次。举例:a = "xyaabbbccccdefww" b = "xxxxyyyyabklmopq" longest(a, b) -> "...

问题描述

给出两个字符串s1和s2,两个字符串仅包含a-z,返回一个排序后的字符串,包含这两个字符串的内容,每个字母只出现一次。

举例:

a = "xyaabbbccccdefww" b = "xxxxyyyyabklmopq" 
longest(a, b) -> "abcdefklmopqwxy"


a = "abcdefghijklmnopqrstuvwxyz" 
longest(a, a) -> "abcdefghijklmnopqrstuvwxyz"

分析&解决

涉及到的问题

  • 排序
  • 去重

按数组的方式

  1. 把两个字符串转化成数组
  2. 对数组进行去重和排序
function longest($a, $b) {
    //转化成数组
    $arr_a = str_split($a);
    $arr_b = str_split($b);
    //数组合并
    $arr_me = array_merge($arr_a,$arr_b);
    //数组去重
    $arr_me = array_unique($arr_me);
    //数组排序
    array_multisort($arr_me);
    //转换成字符串
    return  implode($arr_me);
}

count_chars()

count_chars() 函数返回字符串中所用字符的信息(例如,ASCII 字符在字符串中出现的次数,或者某个字符是否已经在字符串中使用过)。

count_chars(string,mode)

string  必需。规定要检查的字符串。
mode    
可选。规定返回模式。默认是 0。以下是不同的返回模式:
0 - 数组,ASCII 值为键名,出现的次数为键值
1 - 数组,ASCII 值为键名,出现的次数为键值,只列出出现次数大于 0 的值
2 - 数组,ASCII 值为键名,出现的次数为键值,只列出出现次数等于 0 的值
3 - 字符串,带有所有使用过的不同的字符
4 - 字符串,带有所有未使用过的不同的字符

这里用3

解决代码

function longest($a, $b) {
    return count_chars($a.$b, 3);
}

正则表达式

解决代码

function longest($a, $b) {
    $c = str_split($a.$b); sort($c); 
    $e = preg_replace('/(\w)\1+/', "$1", implode("", $c));
    return $e;
}

前面完成的还是之前的方法中的转化数组、排序数组的过程,正则表达式的作用是字符串的去重。

总结

  • 一个问题出现必定会有不同的解决思路
  • 条条大路通罗马
  • 大量数据计算下可以比较出哪种方法更快
目录
相关文章
|
25天前
|
PHP 开发者
PHP数据验证方法:如何检查一个字符串是否是email格式。
以上就是关于PHP如何检查一个字符串是否是email格式的全部内容。希望你在代码书写旅途中,能找到你的北斗星——简洁、高效、可靠的代码验证方式。让我们共同见证PHP的强大和丰富多彩!
49 16
|
1月前
|
Oracle 关系型数据库 MySQL
【YashanDB知识库】php查询超过256长度字符串,数据被截断的问题
本文分析了YashanDB中PHP通过ODBC查询数据时出现的数据截断问题,表现为超过256字节的数据被截断,以及isql工具无法显示超过300字节长度的数据。问题根源在于YashanDB的ODBC驱动仅支持单次查询,且PHP扩展库默认缓冲区限制。解决方案包括改用PHP ODBC扩展库而非PDO_ODBC,以及调整isql代码逻辑以支持循环取数或一次性读取完整数据。文章还提供了具体代码示例和规避方法,适用于23.2.4.14及更早版本。
【YashanDB知识库】php查询超过256长度字符串,数据被截断的问题
|
2月前
|
Oracle 关系型数据库 MySQL
【YashanDB 知识库】php 查询超过 256 长度字符串,数据被截断的问题
php 查询超过 256 字节数据,显示被截断:yashandb 的 odbc 驱动接口 SQLGetData 现在只支持单次查询,不支持多次取数据的操作。 isql 显示不出来,isql 工具最大只查询 300 长度的数据,超过了该长度未正常显示。
|
5月前
|
存储 SQL 数据处理
PHP中如何高效地处理大规模数据的排序?
在PHP中处理大规模数据排序时,选择合适的方法至关重要。对于内存内可以处理的数据,可以直接使用PHP内置排序函数;对于超出内存限制的数据,可以考虑分块处理、外部排序或利用数据库的排序功能。根据具体应用场景和数据规模,选择最佳的排序策略,确保排序操作高效且稳定。
60 2
|
5月前
|
PHP
在PHP中,字符串操作
在PHP中,字符串操作
50 3
|
5月前
|
PHP
06 一文带你搞定PHP字符串操作
路老师带你深入PHP:本文详细介绍了PHP中的字符串定义、操作及常用函数,包括字符串的定义方式、定界符、字符串操作(如去除空格、获取长度、截取、替换、分割和合成等)。通过实例讲解,帮助你快速掌握PHP字符串处理技巧。
52 2
|
7月前
|
XML SQL PHP
php学习笔记-php字符串及字符串常用函数总结-day04
本文总结了PHP中字符串的三种定义方式和常用字符串处理函数,包括字符串的修剪、转换、长度计算、子串操作、比较、连接、分割及替换等操作。
|
9月前
|
存储 PHP 索引
|
PHP
PHP md5函数 的16位字符乱码问题解决
乱码 PHP的md5函数用于对字符串参数进行md5运算,该函数有两个参数: md5 ( string $str [, bool $raw_output = FALSE ] ) : string 第一个参数是输入字符串;第二个参数默认为FALSE,设置为TRUE时可以输出16位的md5值。
1669 0
|
8天前
|
关系型数据库 MySQL Linux
查看Linux、Apache、MySQL、PHP版本的技巧
以上就是查看Linux、Apache、MySQL、PHP版本信息的方法。希望这些信息能帮助你更好地理解和使用你的LAMP技术栈。
60 17
下一篇
oss创建bucket