国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

經(jīng)典面試題:玩家進(jìn)游戲場(chǎng)地分配號(hào)碼、判斷括號(hào)是否閉合、提取回文串字符的分析和 php 程序?qū)崿F(xiàn) - 經(jīng)典數(shù)據(jù)結(jié)構(gòu)面試

這篇具有很好參考價(jià)值的文章主要介紹了經(jīng)典面試題:玩家進(jìn)游戲場(chǎng)地分配號(hào)碼、判斷括號(hào)是否閉合、提取回文串字符的分析和 php 程序?qū)崿F(xiàn) - 經(jīng)典數(shù)據(jù)結(jié)構(gòu)面試。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

經(jīng)典面試題一、判斷括號(hào)是否閉合的代碼實(shí)現(xiàn)

1. 題目?jī)?nèi)容:

? ? 給定一長(zhǎng)串字母和符號(hào),里面有三種括號(hào)包括([{}])這些,需要判斷這三種括號(hào)必須是配對(duì)的。即這三類括號(hào)要么不出現(xiàn),要出現(xiàn)必須是先出現(xiàn)左邊的括號(hào),然后出現(xiàn)右邊的,中間括號(hào)可以嵌套。

2. 解答思路:

? ? 定義一個(gè)字符對(duì)應(yīng)關(guān)系數(shù)組,初始化一個(gè)數(shù)組棧。所以進(jìn)入的左邊符號(hào)入棧,如果進(jìn)入的是右邊的符號(hào),則與棧中最后進(jìn)入的元素進(jìn)行配對(duì)判斷,如果配對(duì)則消除這對(duì)符號(hào)。如果不配對(duì),則說(shuō)明不配對(duì)。

3. PHP編程實(shí)現(xiàn):

#([{)]}類括號(hào)符號(hào)是否閉合的判斷
#04.cn
$args = getopt('c:');
extract($args);
echo "\n接收字符串:".$c."\n閉合判斷結(jié)果:";

function checkClose($str){
    #定義一個(gè)關(guān)系
    $relate = array('('=>')', '['=>']', '{'=>'}' );  

    #遍歷字符串將對(duì)應(yīng)符號(hào)插入棧
    $quene = array();
    for($i=0; $i< strlen($str); $i++){
        #如果是出現(xiàn)了([{類字符,則直接存入棧等待配對(duì)
        if(isset($relate[$str{$i}])){
            array_push($quene, $str{$i}); 
        }elseif( in_array($str{$i}, $relate)){
            #如果出現(xiàn)了右邊的)]}類字符,則必須與棧中最后一個(gè)元素相匹配,否則即為不是閉合的
            if($str{$i} != $relate[end($quene)]){
                return false;
            }else{
                #匹配的話則消除這對(duì)符號(hào)
                array_pop($quene);
            }   
        }else{
            #非上述6個(gè)符號(hào)的內(nèi)容不用考慮
            continue;
        }   
    }   

    #結(jié)尾只需要返回對(duì)$quene的判斷
    return (bool)!$quene;
}
var_dump(checkClose($c));

4. 運(yùn)行結(jié)果:

在服務(wù)器命令行模式中運(yùn)行結(jié)果如下:

[root@047 php]# php close.php -c='req(9[09]pp{rew}'
接收字符串:req(9[09]pp{rew}
閉合判斷結(jié)果:bool(false)

[root@047 php]# php close.php -c='req(9[09]pp{rew})'
接收字符串:req(9[09]pp{rew})
閉合判斷結(jié)果:bool(true)

經(jīng)典面試題二、一個(gè)玩家進(jìn)游戲場(chǎng)地分配號(hào)碼的php代碼實(shí)現(xiàn)

1. 題目?jī)?nèi)容:

? ? 一個(gè)簡(jiǎn)單的容易在面試中碰到的動(dòng)手編碼題,一個(gè)游戲場(chǎng)地最多只能容納200個(gè)玩家,每個(gè)玩家都有一個(gè)號(hào)碼,號(hào)碼的范圍從0~199,全程不斷地有玩家進(jìn)進(jìn)出出,但是每個(gè)在場(chǎng)玩家的號(hào)碼各不相同。 請(qǐng)?jiān)O(shè)計(jì)一個(gè)類TicketsPool,負(fù)責(zé)給進(jìn)去的玩家分配號(hào)碼(給出玩家申請(qǐng)?zhí)柎a的實(shí)現(xiàn),并給出你覺(jué)得應(yīng)該有的成員方法,代碼可以適當(dāng)加注釋)以及用戶退出的方法實(shí)現(xiàn)。

2. 解答思路:

????實(shí)現(xiàn)起來(lái)也簡(jiǎn)單,可以設(shè)想有一套玩家用戶系統(tǒng),經(jīng)過(guò)玩家基本賬號(hào)驗(yàn)證之后進(jìn)入玩家游戲場(chǎng)地,我這里就用的玩家的名稱作為進(jìn)入的唯一標(biāo)記吧,當(dāng)然可以使用用戶uid,只要保障每次進(jìn)來(lái)的時(shí)候能正確分配號(hào)碼,不會(huì)沖突,如果出現(xiàn)房間滿員能返回滿員的信息。

3. PHP編程實(shí)現(xiàn):

<?php
#玩家入場(chǎng)退出類
class TicketsPool{
    
    static $numArr = array();

    #成員初始化進(jìn)入
    public function getNum($username){
            
        //同一用戶重入
        $key = array_search($username, self::$numArr);
        if($key!==false){
            return $key;
        }   
            
        #查找空號(hào)碼
        #for($i=0; $i<200; $i++){
        for($i=0; $i<5; $i++){
            if(!isset(self::$numArr[$i])){
                self::$numArr[$i] = $username;
                return $i; 
            }   
        }   
            
        #滿員
        return false;
    }   
        
    #成員退出
    public function logout($username){
        $key = array_search($username, self::$numArr);
        if($key!==false){
            unset(self::$numArr[$key]);
            return true;
        }else{
            #非法調(diào)用
            return false;
        }   
            
    }   
        
}

$TicketsPool = new TicketsPool();
$gamerArr = array( 'tomorrow', '哈哈', '國(guó)慶了', '大飛機(jī)', '殲20', '快遞來(lái)了', '再來(lái)一個(gè)');
foreach($gamerArr as $username){
    $room_id = $TicketsPool->getNum($username);
    if($room_id !== false){
        echo $username."-分配號(hào)碼:".$room_id,"\n";
    }else{
        echo $username."--分配失敗:房間滿員了\n";    
        echo "國(guó)慶了 退出房間:退出".($TicketsPool->logout('國(guó)慶了')?'成功':'失敗')."\n";
    }   
}

4. 運(yùn)行結(jié)果:

在linux上執(zhí)行結(jié)果如下:

[root@007 php]# php game.php?
tomorrow-分配號(hào)碼:0
哈哈-分配號(hào)碼:1
國(guó)慶了-分配號(hào)碼:2
大飛機(jī)-分配號(hào)碼:3
殲20-分配號(hào)碼:4
快遞來(lái)了--分配失敗:房間滿員了
國(guó)慶了 退出房間:退出成功
再來(lái)一個(gè)-分配號(hào)碼:2

經(jīng)典面試題三、php從給定字符串中提取出所有回文串字符的代碼實(shí)現(xiàn)

1. 題目?jī)?nèi)容:

????php從字符串中提出回文串?dāng)?shù)據(jù),什么是回文串?回文串是一個(gè)正讀和反讀都一樣的字符串,比如abcba或者abba等等就是回文串。今天看到了一道回文串相關(guān)的題目:給定一個(gè)字符串s,你可以從中刪除一些字符,使得剩下的串是一個(gè)回文串。如何刪除才能使得回文串最長(zhǎng)呢?輸出需要?jiǎng)h除的字符個(gè)數(shù)。

????這是網(wǎng)上有人記錄的遇到的面試題,我到還沒(méi)有碰到過(guò),于是就當(dāng)自己去面試吧,拿到題后就自己開(kāi)始考慮接著就開(kāi)始干了,事情都是越想越清楚,在慢慢地嘗試和試錯(cuò)中解決,晚上也在未借助任何外力進(jìn)行實(shí)現(xiàn)了,不知道網(wǎng)上有沒(méi)有同樣的實(shí)現(xiàn)方法。雖然我自己能單獨(dú)完成,但我不得不承認(rèn),如果是在一個(gè)面試環(huán)境,同時(shí)時(shí)間又有限的情況下,我也無(wú)法保證自己能做出來(lái)。更不要說(shuō)考慮性能了。

2. 解答思路:

????思路也很簡(jiǎn)單,回文串肯定至少有2個(gè)字符,可以是奇數(shù)個(gè)也可以是偶數(shù)個(gè),所以拿到一個(gè)字符串,直接從第2個(gè)字符開(kāi)始我將字符切成左右兩邊,然后同時(shí)從中間出發(fā)去兩邊尋找同樣的字符以達(dá)到回文,如果找到了就表示這個(gè)字符可以在回文串中,并進(jìn)行記錄。同時(shí)把兩段字符分別從中間刪除掉查找過(guò)的字符或者部分字符(因?yàn)檫@部分不會(huì)再有可能出現(xiàn)在回文串中),一直到左邊或者右邊的字符串為空,最終查出了整個(gè)字符串中所有可能的回文串,再?gòu)倪@些回文串?dāng)?shù)據(jù)列表里查找最長(zhǎng)的回文串就不是問(wèn)題了。

3. PHP編程實(shí)現(xiàn):

具體完整實(shí)現(xiàn)的php代碼如下:

<?php
#入?yún)z查
$args = getopt('c:');
extract($args);
if(empty($c)) exit('need param:c');

echo "入?yún):{$c}\n";
#調(diào)用實(shí)例
$BackChar = new BackChar();
print_r($BackChar->getBackChar($c));

#回文串實(shí)現(xiàn)類
class BackChar{

    #定義一個(gè)數(shù)組存儲(chǔ)字符
    private $char;
    public $backArr = array();

    #每個(gè)位置開(kāi)始嘗試尋找回文串
    protected function calcute($i, $odd=true){

        #從中間開(kāi)始向兩邊嘗試找回串,將查找寄數(shù)個(gè)和偶數(shù)個(gè)字符的方式合并
        $left = substr($this->char, 0, $i);
        $right = substr($this->char, $odd?($i+1):$i);
        $c = $odd?$this->char{$i}:'';
        $ok = ''; 
        $index_l = strlen($left);
        while($left && $right){
            $val = substr($left, $index_l - 1, 1); 
            $left= substr($left,0,-1);

            #如果找到了,則說(shuō)明可以關(guān)閉一組字符
            $index_r = strpos($right, $val);
            if($index_r !== false){
                $ok.=$val;
                $right = substr($right, $index_r +1);
            }   
    
            $index_l --; 
        }   

        #只有在找到了匹對(duì)的字符才認(rèn)為是有回串
        if($ok){
            $key = strrev($ok).$c.$ok; 
            $this->backArr[$key] = strlen($key);
        }   
    }   
    
    #供外部調(diào)用的方法
    public function getBackChar($char){

        $this->char = $char;

        #循環(huán)嘗試回文串的位置
        for($i=1; $i<strlen($char)-1; $i++){
            #嘗試找出所有奇數(shù)個(gè)回文串字符
            $this->calcute($i);
            #嘗試找出偶數(shù)個(gè)回文串字符
            $this->calcute($i, false);
        }

        #返回所有的回文串字符串
        return $this->backArr;
    }
}

4. 運(yùn)行結(jié)果:

在linux服務(wù)器上執(zhí)行結(jié)果如下:

[root@007 php]# php back.php -c=helloworld
入?yún):helloworld
Array
(
    [lll] => 3
    [ll] => 2
    [lol] => 3
    [lowol] => 5
    [lool] => 4
    [lrl] => 3
)
[root@007 php]# php back.php -c=abcdehkkkabzhtt99ba
入?yún):abcdehkkkabzhtt99ba
Array
(
    [aba] => 3
    [aa] => 2
    [abcba] => 5
    [abba] => 4
    [abdba] => 5
    [abeba] => 5
    [abhba] => 5
    [abhkhba] => 7
    [abhhba] => 6
    [abhkkkhba] => 9
    [abhkkhba] => 8
    [abhahba] => 7
    [abzba] => 5
    [abtba] => 5
    [abttba] => 6
    [ab9ba] => 5
    [ab99ba] => 6
)

????后在網(wǎng)上看到說(shuō)這個(gè)問(wèn)題可從兩個(gè)字符間的最大子串角度來(lái)思考,我到?jīng)]去想這塊,只是把目標(biāo)一步一步實(shí)現(xiàn)了吧,當(dāng)然這個(gè)方法肯定還有改進(jìn)的余地,等下回有時(shí)間有閑再看看吧。

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-857346.html

到了這里,關(guān)于經(jīng)典面試題:玩家進(jìn)游戲場(chǎng)地分配號(hào)碼、判斷括號(hào)是否閉合、提取回文串字符的分析和 php 程序?qū)崿F(xiàn) - 經(jīng)典數(shù)據(jù)結(jié)構(gòu)面試的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【pygame游戲開(kāi)發(fā)】這幾個(gè)經(jīng)典游戲,小紅書(shū)Python面試題目

    【pygame游戲開(kāi)發(fā)】這幾個(gè)經(jīng)典游戲,小紅書(shū)Python面試題目

    pygame.time.set_timer(change_hole_event, 800) mole = Mole(cfg.MOLE_IMAGEPATHS, hole_pos) hammer = Hammer(cfg.HAMMER_IMAGEPATHS, (500, 250)) clock = pygame.time.Clock() your_score = 0 flag = False init_time = pygame.time.get_ticks() while True: time_remain = round((61000 - (pygame.time.get_ticks() - init_time)) / 1000.) if time_remain == 40 and not flag: hole

    2024年04月25日
    瀏覽(117)
  • 【leetcode面試經(jīng)典150題】10.跳躍游戲 II(C++)

    【leetcode面試經(jīng)典150題】專欄系列將為準(zhǔn)備暑期實(shí)習(xí)生以及秋招的同學(xué)們提高在面試時(shí)的經(jīng)典面試算法題的思路和想法。本專欄將以一題多解和精簡(jiǎn)算法思路為主,題解使用C++語(yǔ)言。(若有使用其他語(yǔ)言的同學(xué)也可了解題解思路,本質(zhì)上語(yǔ)法內(nèi)容一致) 給定一個(gè)長(zhǎng)度為? n ?的

    2024年04月08日
    瀏覽(27)
  • leetcode每日一題——45.跳躍游戲II(面試經(jīng)典150題)

    45. 跳躍游戲 II - 力扣(LeetCode) 給定一個(gè)長(zhǎng)度為 n 的 0 索引 整數(shù)數(shù)組 nums。 初始位置為 nums[0] 。 每個(gè)元素 nums[i] 表示從索引 i 向前跳轉(zhuǎn)的最大長(zhǎng)度。換句話說(shuō),如果你在 nums[i] 處,你可以跳轉(zhuǎn)到任意 nums[i + j] 處:? ?0 = j = nums[i]? ? ?i + j n 返回到達(dá)?nums[n - 1] 的最小跳躍次數(shù)

    2024年02月13日
    瀏覽(26)
  • 網(wǎng)站程序中手機(jī)號(hào)碼判斷方法

    ?需求:輸入錯(cuò)誤的手機(jī)號(hào),會(huì)有提示語(yǔ),正確的手機(jī)號(hào)碼會(huì)有正確的圖標(biāo) ??效果: ??思路: ??(1)排版(不細(xì)講),使用input 、button、span等標(biāo)簽,排版里面一個(gè)主要的小點(diǎn)是,需要寫出兩個(gè)span ,通過(guò)v-show先進(jìn)行隱藏,等后面判斷手機(jī)號(hào)碼的正確錯(cuò)誤再進(jìn)行顯示與

    2024年02月08日
    瀏覽(20)
  • 判斷電話號(hào)碼是否重復(fù)-excel

    判斷電話號(hào)碼是否重復(fù)-excel

    有時(shí)候重復(fù)的數(shù)據(jù)不需要或者很煩人,就需要采取措施,希望以下的方法能幫到你。 方法一: 1)針對(duì)第一個(gè)單元格輸入等號(hào),以及公式countif(查找記錄數(shù)的范圍,需要查找的單元格) 2)輸入enter之后,然后鼠標(biāo)變?yōu)楹谏募犹?hào)后,往下拉自動(dòng)填充,如下圖所示。 方法二:先

    2024年02月03日
    瀏覽(81)
  • C語(yǔ)言經(jīng)典算法之括號(hào)匹配算法

    目錄 前言 A.建議 B.簡(jiǎn)介 一 代碼實(shí)現(xiàn) 二 時(shí)空復(fù)雜度 A.時(shí)間復(fù)雜度分析 B.空間復(fù)雜度分析 三 優(yōu)缺點(diǎn) A.優(yōu)點(diǎn): B.缺點(diǎn): 四 現(xiàn)實(shí)中的應(yīng)用 1.學(xué)習(xí)算法最重要的是理解算法的每一步,而不是記住算法。 2.建議讀者學(xué)習(xí)算法的時(shí)候,自己手動(dòng)一步一步地運(yùn)行算法。 tips:文中的(如

    2024年02月21日
    瀏覽(24)
  • java 根據(jù)身份證號(hào)碼判斷性別

    在Java中,您可以根據(jù)身份證號(hào)碼的規(guī)則來(lái)判斷性別。中國(guó)的身份證號(hào)碼通常采用的是以下規(guī)則: 第17位數(shù)字代表性別,奇數(shù)表示男性,偶數(shù)表示女性。 通常,男性的出生日期的第15、16位數(shù)字是01,女性是02。 請(qǐng)注意,這只是一個(gè)大致的規(guī)則,實(shí)際上,有些特殊情況下的身份

    2024年02月07日
    瀏覽(88)
  • 【java】合法括號(hào)序列判斷與Fibonacci數(shù)列

    【java】合法括號(hào)序列判斷與Fibonacci數(shù)列

    目錄 ??編程題 1.合法括號(hào)序列判斷 2.Fibonacci數(shù)列 ? 1.合法括號(hào)序列判斷 鏈接:合法括號(hào)序列判斷__??途W(wǎng) (nowcoder.com) 給定一個(gè)字符串 A 和其長(zhǎng)度 n ,請(qǐng)返回一個(gè)bool值代表它是否為一個(gè)合法的括號(hào)串(只能由括號(hào)組成)。 測(cè)試樣例: \\\"(()())\\\",6 返回:true 測(cè)試樣例: \\\"()a()()\\\",

    2023年04月23日
    瀏覽(31)
  • 根據(jù)身份證號(hào)碼判斷是否是未成年人

    ?/**** ? ? ?* 根據(jù)身份證號(hào)計(jì)算年齡 ? ? ?* @param str ? ? ? ?* @param currDate? ? ? ?* @return ? ? ?*/ ? ? public boolean calcYear(String str, Date currDate){ ? ? ? ? DateFormat dateFormat = new SimpleDateFormat(\\\"yyyyMMdd\\\"); ? ? ? ? Long year = Long.parseLong(str.substring(0,4)); ? ? ? ? Long month = Long.parseLong(st

    2023年04月23日
    瀏覽(102)
  • 游戲玩家的新大陸?小紅書(shū)游戲內(nèi)容場(chǎng)景洞察

    游戲玩家的新大陸?小紅書(shū)游戲內(nèi)容場(chǎng)景洞察

    2023年,如果你問(wèn)年輕人他們?cè)谀睦镉懻撚螒??他們可能?huì)提到一些平臺(tái),比如Steam、TapTap、B站、微博或者論壇。但是如果你向身邊的女孩子詢問(wèn),她們可能會(huì)驚喜地告訴你:小紅書(shū)。 小紅書(shū)平臺(tái)一直給人的標(biāo)簽是是“美妝、旅游、美食分享”,但在現(xiàn)在的小紅書(shū)生態(tài)里,“

    2024年02月09日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包