page contents

字节跳动笔试(后台研发PHP面试)

题目一: 从一个字符串中找出无重复的最大子串(此题忘记截图)。 解答: <?php/** * Created by Sean. * Date: 2018/9/9 * Time: 9:24 */print_r("请输入字符串:");fscanf(STDIN,"%s",...

attachments-2021-06-uHZmgi4p60c2da110841e.png

题目一:

从一个字符串中找出无重复的最大子串(此题忘记截图)。

解答:

<?php
/**
 * Created by Sean.
 * Date: 2018/9/9
 * Time: 9:24
 */
print_r("请输入字符串:");
fscanf(STDIN,"%s",$str);
$temp = array();
$length = 0;
for($i = 0;$i < strlen($str);$i++){
    if (in_array($str[$i],$temp)){
        if (count($temp) >= $length) {
            $length = count($temp);
            $result = substr($str, $i-$length, $length);
        }
        $temp = [];
    }
    array_push($temp,$str[$i]);
}
if (count($temp) > $length){
    $result = substr($str,'-'.count($temp));
}
print_r("最大长度为:".strlen($result));
print_r("\n最大长度对应的字符串为:".$result);


题目二:

attachments-2021-06-1DQSOmJZ60c2da3fb4ae3.png

解答:

<?php
/**
 * Created by Sean.
 * Date: 2018/9/9
 * Time: 11:27
 */
print_r('请输入数组长度:');
fscanf(STDIN,"%d",$M);
//构造随机数组
$info = [];
for($i = 0;$i < $M;$i++){
    for ($j = 0;$j < $M;$j++){
        $info[$i][$j] = rand(0,1);
        print_r($info[$i][$j]." ");
    }
    print_r("\n");
}
$num = 0;
for ($i = 0;$i < $M;$i++){
    for ($j = 0;$j < $M;$j++){
        if ($info[$i][$j] == 1){
            if ($j > 0){
                if ($i > 0){
                    if ($info[$i][$j-1] == 0 && $info[$i-1][$j] == 0){
                        $num++;
                    } elseif ($info[$i][$j-1] == 1 && $info[$i-1][$j] == 1 && $info[$i-1][$j-1] == 0){
                        $num--;
                    }
                } else{
                    if ($info[$i][$j-1] == 0){
                        $num++;
                    }
                }
            } else{
                if ($i > 0){
                    if ($info[$i-1][$j] == 0){
                        $num++;
                    }
                } else{
                    $num++;
                }
            }
        }
    }
}
print_r("部门数为:$num");


题目三:

attachments-2021-06-WFINYzHh60c2d9dc836f1.png


解答:

<?php
/**
 * Created by Sean.
 * Date: 2018/9/9
 * Time: 14:32
 */
print_r("请输入错误ip:");
fscanf(STDIN,'%s',$ip);
$ip_len = strlen($ip);
if ($ip_len > 12 || $ip_len < 4){
    print_r('输入ip有误');
    exit(0);
}
$pos_ip = [];
$p = 0;
print_r('可能的结果有:');
for($i = 1;$i < 4;$i++){
    $first = substr($ip,0,$i);
    if ($first >= 255){
        continue;
    }
    for ($j = 1;$j < 4;$j++) {
        $second = substr($ip, $i, $j);
        if ($second >= 255) {
            continue;
        }
        for ($k = 1; $k < 4; $k++) {
            $four_len = $ip_len- $i - $j - $k;
            if ($four_len <= 0){
                continue;
            }
            $third = substr($ip, ($i + $j), $k);
            $four = substr($ip, ($i + $j + $k),$four_len);
            if ($third >= 255 || $four >= 255) {
                continue;
            }
            $pos_ip[$p++] = $first . '.' . $second . '.' . $third.'.'.$four;
            print_r("\n".$pos_ip[$p-1]);
        }
    }
}
print_r("\n有".$p.'种可能');


题目四:

attachments-2021-06-J9HyocFc60c2d9bb12d16.png

解答:

<?php
/**
 * Created by Sean.
 * Date: 2018/9/9
 * Time: 16:43
 */
print_r('请输入数组长度:');
fscanf(STDIN,'%d',$n);
print_r("请输入 $n 个整数,以空格分隔:");
$data = fgets(STDIN);
$temp_arr = explode(' ',$data);
if (count($temp_arr) > $n){
    print_r('输入数组长度与实际长度不符,已自动提取前'.$n.'个组成对应数组');
} elseif (count($temp_arr) < $n){
    print_r('数组长度不够,请重新输入!');
}
$arr = array_slice($temp_arr,0,$n);
$result = array();
print_r("结果表示:");
foreach ($arr as $item => $itemVal){
    if ($itemVal[0] == 0){
        if (strlen($itemVal) > 2 && strlen($itemVal) < 6){
            $result[$item] = 1;
        } else{
            $result[$item] = 0;
        }
    } else{
        $num = ceil(strlen($itemVal)/8);
        if ($num < 2){
            $result[$item] = 0;
        } else{
            if (substr($itemVal,0,$num) == str_repeat('1',$num) && substr($itemVal,$num,(8-$num)) == str_repeat('0',8-$num)){
                for ($i = 1;$i < $num;$i++){
                    if (substr($itemVal,8*$i,2) == '10'){
                        $i == ($num-1) && $result[$item] = 1;
                    } else{
                        $result[$item] = 0;
                        break;
                    }
                }
            } else{
                $result[$item] = 0;
            }
        }
    }
    print_r($result[$item]." ");
}


题目五:

attachments-2021-06-rdeW9HSL60c2d997f2306.png

解答:

<?php
/**
 * Created by Sean.
 * Date: 2018/9/9
 * Time: 21:29
 */
print_r('请输入用户数:');
fscanf(STDIN,'%d',$N);
print_r('请输入关系对数:');
fscanf(STDIN,'%d',$M);
print_r('请输入'.$M.'对关系,以,分离,每两个一对:');
$D = fgets(STDIN,4*$M);
$data = explode(' ',$D);
while(count($data) < 2*$M){
    print_r('关系对不够,请重新输入:');
    $D = fgets(STDIN,4*$M);
    $data = explode(' ',$D);
}
if (count($data) > 2*$M){
    array_filter($data);
    $data = array_slice($data,0,2*$M);
    print_r('数据多比预期关系对数多,已提取前'.$M.'对!');
}
$temp = array();
for($i = 0;$i < 2*$M;$i = $i+2){
    if (!array_key_exists($data[$i],$temp)){
        $temp[$data[$i]] = array();
    }
    if (!in_array($data[$i+1],$temp[$data[$i]])){
        str_replace("\n",'',$data[$i+1]);
        array_push($temp[$data[$i]],$data[$i+1]);
    }
}
$result = [];
foreach ($temp as $item => $itemVal){
    foreach ($itemVal as $ltVal){
        if (!array_key_exists($ltVal,$result)){
            $result[$ltVal] = array();
        }
        if (!in_array($item,$result[$ltVal])){
            array_push($result[$ltVal],$item);
        }
        if (!array_key_exists($ltVal,$temp)){
            continue;
        }
        foreach ($temp[$ltVal] as $ptVal){
            if (!array_key_exists($ptVal,$result)){
                $result[$ptVal] = [];
            }
            if (!in_array($item,$result[$ptVal]) && $item != $ptVal){
                array_push($result[$ptVal],$item);
            }
            if (!in_array($ltVal,$result[$ptVal])){
                array_push($result[$ptVal],$ltVal);
            }
        }
    }
}
print_r('抖音红人有:');
$count = 0;
foreach ($result as $item => $value){
    if (count($value) >= $N-1){
        print_r($item.' ');
        $count++;
    }
}
print_r("\n总人数为:$count");


总结:本次题目总的来说比较简单,以上为个人想法,欢迎讨论!

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

程序员编程交流QQ群:805358732

如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。

attachments-2022-06-X19SjKYM62ac30de35e1f.jpeg

0 条评论

请先 登录 后评论
轩辕小不懂
轩辕小不懂

2403 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1324 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章