這篇文章主要介紹“如何搭建一個字符串包裹函數(shù)”,在日常操作中,相信很多人在如何搭建一個字符串包裹函數(shù)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何搭建一個字符串包裹函數(shù)”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務領(lǐng)域包括:網(wǎng)站設計制作、成都網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的溫縣網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
我們希望構(gòu)建一個字符串處理函數(shù),這個字符串處理函數(shù)將會對給定輸入的字符串和參數(shù)進行處理。
我們首先將會定義一個字符串的數(shù)組,在這個字符串的數(shù)組中每一個元素都是存儲為一個單詞,同時我們將會給出一個整數(shù)類型的參數(shù)。你的方法將會對上面輸入的 2 個參數(shù)進行運算,在每一個單詞和每一個單詞之間會添加一個字符 ”-“ 來進行區(qū)分,同時新生成的數(shù)組或者 List 每一元素的字符串長度將不能超過給出的字符串的長度。
如果你新生成的元素是以橫杠結(jié)尾的話,那么你需要刪除這個橫杠。
下面給出了這個問題的示例,以便于你參考。
| 輸入?yún)?shù) 1 | 輸入?yún)?shù) 2 | 輸出 |
|---|---|---|
| words1 = [ “The”, “day”, “began”, “as”, “still”, “as”, “the”, “night”, “abruptly”, “l(fā)ighted”, “with”, “brilliant”, “flame” ] | 13 | [ “The-day-began”, “as-still-as”, “the-night”, “abruptly”, “l(fā)ighted-with”, “brilliant”, “flame” ] |
| words1 = [ “The”, “day”, “began”, “as”, “still”, “as”, “the”, “night”, “abruptly”, “l(fā)ighted”, “with”, “brilliant”, “flame” ] | 20 | [ “The-day-began-as”, “still-as-the-night”, “abruptly-lighted”, “with-brilliant-flame” ] |
| words2 = [ “Hello” ] | 5 | [ “Hello” ] |
| words3 = [ “Hello”, “world” ] | 5 | [ “Hello”, “world” ] |
| words4 = [“Well”, “Hello”, “world” ] | 5 | [ “Well”, “Hello”, “world” ] |
| words5 = [“Hello”, “HelloWorld”, “Hello”, “Hello”] | 20 | [ “Hello-HelloWorld”, “Hello-Hello” ] |
上面給出的是是測試用的示例,其中輸入?yún)?shù) words1 到 5 就是定義的變量名而已,不需要過度關(guān)注。
這個題目的難度還是比較大的,尤其是在沒有開發(fā)工具進行編譯的時情況下。
這個題目是 indeed.com 的一個在線面試測試題。這個公司的在線面試測試使用的是第三方公司提供的評估工具,主持面試的人可能是對技術(shù)并不是非常了解的人,或者是對技術(shù)比較了解的人,我們不清楚具體的情況。
但是在面試過程中,他們只注重程序的輸出和面試的結(jié)果,至于你的思路或者你的想法,主持面試的人可能并不十分關(guān)注,同時也不怎么會聽你的解釋,很多時候你都會是在自言自語。
整體感覺面試互動很少,更多的時候是你在對著屏幕說話。
最開始的時候,我的思路是首先對給出的數(shù)組進行遍歷,當取得第一個元素的時候,將元素后面添加橫杠,然后與長度進行對比,如果長度超過了給定的長度的話那么就刪除橫杠后壓入需要返回的列表中。
如果長度少于返回的長度,那么再取出下一個元素,同時再結(jié)尾再添加橫桿后進行判斷,然后再確定橫杠的處理。
這個題目的主要問題就在于橫杠的處理,有時候橫杠在結(jié)尾,有時候橫杠在開頭,你需要一個一個判讀。
在隨后的測試中,我發(fā)現(xiàn)一直是橫杠處理不好,結(jié)果導致沒有完全通過最后的測試,就是上面測試用例的第二行。
因為這個題目時間有限,并且我們還不能使用 StringUtils 來進行一些快速的字符串處理,因此我沒有在規(guī)定的時間內(nèi)完成所有的測試。在隨后結(jié)束面試后,我再仔細思考了下問題后發(fā)現(xiàn)其實我們還可以有其他的辦法來進行操作。
我使用下面的思路,并且完成了代碼的修改。
首先我們需要將輸入的數(shù)組變成一個長的字符串,單詞之間使用橫杠分隔。例如,[ “Hello”, “world” ] 將會變成字符串為:Hello-world。
在完成上面的操作后,我們需要使用一個 while 循環(huán)來做。
首先在 while 循環(huán)中判讀整個字符串長度小于給定的長度,這個時候需要直接返回,然后中斷循環(huán)。
下一步,對字符串,從頭到給定的長度進行截斷后獲得子字符串,隨后對子字符串進行判斷,如果這個子字符串是以橫杠結(jié)尾的話,刪除橫杠然后壓入需要返回的數(shù)組,然后更新需要處理的字符串為截斷后余下的字符串。
如果按照給定的長度進行截斷后,你獲得最后的一個字符不是橫杠,那么我們就知道你截斷到了單詞上,獲得的子字符串中,找到最后一個橫杠,然后獲得索引的 ID,在獲得這個索引的 ID 后對需要處理的字符串按照索引 ID 進行截斷。
然后刪除掉最后的橫杠壓入需要返回的列表中。
在余下的字符串中可能遇到的情況是目前你將會是橫杠開頭的,因此你還需要刪除掉余下字符串中開頭和結(jié)尾的橫杠。
繼續(xù)上面的處理,直到需要處理的字符串長度小于給定的長度后中斷循環(huán)。

上圖是對上面思路 2 中的算法進行測試后的返回結(jié)果,從結(jié)果中可以看到滿足需要輸出的預期。
到此,關(guān)于“如何搭建一個字符串包裹函數(shù)”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
名稱欄目:如何搭建一個字符串包裹函數(shù)
本文鏈接:http://chinadenli.net/article26/jigpcg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、App設計、品牌網(wǎng)站設計、網(wǎng)站建設、虛擬主機、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)