记一个不明所以的面试题

12 篇文章 2 订阅

字符串拼接处理

要求:

  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个输入的字符串, 相加即可得到答案

实例代码

<?php

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);

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值