热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

记一个不明所以的面试题

字符串拼接处理要求:abbaaaaa;aabbccccbbaaaabbbbaa;这是今天一个朋友问我的一个面试题,看题目应该是考字符串处理,下午写了一半没写完,吃完饭脑子还在

字符串拼接处理


要求:


  1. ab+ba+aa = aa;
  2. aabbcc+ccbbaa=aabbbbaa;

这是今天一个朋友问我的一个面试题, 看题目应该是考字符串处理,下午写了一半没写完, 吃完饭脑子还在想着这件事, 现在闲下来也跟着练练手.


思路分析:


  1. 三个字符串拼接, 前后相同部分移除, 下面是考题原话

需要特别注意的是,拼接过程中重复的部分是相对前面已经拼接了的字符串而言的



  1. 刚审题时也有很多奇怪想法, 后来仔细思考了下, 先不说这个算法写出来能干啥使, 就本题而言, 实际计算过程其实关键点只有两步
  2. 这里假设三个字符串分别为: A , B , C
  3. 用B的第一位对比A的最后一位, 相同则A和B均把此字符剔除
  4. 提出B的第一个字符做一个flag, 遍历向下对比时要判断下一个字符是否与我立的flag相同,相同则继续执行,否则跳出
  5. 继续第四步, 用B的第二位对比A的倒数第二位,相同则剔除
  6. 重复456, 5应该放在第一步吧, 实际步骤是: 546;
  7. 处理完成后,得到的结果应为N个输入的字符串, 相加即可得到答案

实例代码

function merge(...$str){$num = func_num_args();$list = func_get_args();foreach ($list as $k => $v) {if(isset($list[$k+1])){$a = str_split($list[$k]);$b = str_split($list[$k+1]);$flag = $b[0];$a_unset = [];$b_unset = [];foreach ($b as $k1 => $v1) { $a_k = count($a)-1-$k1;if($v1 != $flag) break;if($v1 == $a[$a_k]){$a_unset[] = $a_k;$b_unset[] = $k1;}}foreach ($a_unset as $ka => $va) {unset($a[$va]);}foreach ($b_unset as $kb => $vb) {unset($b[$vb]);}$list[$k] = implode('',$a);$list[$k+1] = implode('',$b); }}$res = '';// var_dump($list);foreach ($list as $key => $value) {$res .= $value;}return $res;
}$res = merge('ab','ba','aa');
// $res = merge('aabbcc','ccbbaa');
var_dump($res);

代码只是做了两个验证证明结果, 没有继续优化
至于实用性嘛… 算了, 考题哪有实用性这一说…
仅此记录.


推荐阅读
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • vb.net面试题,请大家帮忙,谢谢。如果需要讲详细一点,那就加我QQ531412815第4题,潜在的错误,这里的错误不是常规错误,属于那种只有在运行是才知道的错误:Catchex ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 如何使用计算机控制遥控车的步骤和电路制作方法
    本文介绍了使用计算机控制遥控车的步骤和电路制作方法。首先,需要检查发送器的连接器和跳线,以确定命令的传递方式。然后,通过连接跳线和地面,将发送器与电池的负极连接,以实现遥控车的前进。接下来,制作一个简单的电路,使用Arduino命令将连接到跳线的电线接地,从而实现将Arduino命令转化为发送器命令。最后,通过焊接晶体管和电阻,完成电路制作。详细的步骤和材料使用方法将在正文中介绍。 ... [详细]
author-avatar
mobiledu2502920033
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有