您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何搭建一個字符串包裹函數”,在日常操作中,相信很多人在如何搭建一個字符串包裹函數問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何搭建一個字符串包裹函數”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
我們希望構建一個字符串處理函數,這個字符串處理函數將會對給定輸入的字符串和參數進行處理。
我們首先將會定義一個字符串的數組,在這個字符串的數組中每一個元素都是存儲為一個單詞,同時我們將會給出一個整數類型的參數。你的方法將會對上面輸入的 2 個參數進行運算,在每一個單詞和每一個單詞之間會添加一個字符 ”-“ 來進行區分,同時新生成的數組或者 List 每一元素的字符串長度將不能超過給出的字符串的長度。
如果你新生成的元素是以橫杠結尾的話,那么你需要刪除這個橫杠。
下面給出了這個問題的示例,以便于你參考。
輸入參數 1 | 輸入參數 2 | 輸出 |
---|---|---|
words1 = [ “The”, “day”, “began”, “as”, “still”, “as”, “the”, “night”, “abruptly”, “lighted”, “with”, “brilliant”, “flame” ] | 13 | [ “The-day-began”, “as-still-as”, “the-night”, “abruptly”, “lighted-with”, “brilliant”, “flame” ] |
words1 = [ “The”, “day”, “began”, “as”, “still”, “as”, “the”, “night”, “abruptly”, “lighted”, “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” ] |
上面給出的是是測試用的示例,其中輸入參數 words1 到 5 就是定義的變量名而已,不需要過度關注。
這個題目的難度還是比較大的,尤其是在沒有開發工具進行編譯的時情況下。
這個題目是 indeed.com 的一個在線面試測試題。這個公司的在線面試測試使用的是第三方公司提供的評估工具,主持面試的人可能是對技術并不是非常了解的人,或者是對技術比較了解的人,我們不清楚具體的情況。
但是在面試過程中,他們只注重程序的輸出和面試的結果,至于你的思路或者你的想法,主持面試的人可能并不十分關注,同時也不怎么會聽你的解釋,很多時候你都會是在自言自語。
整體感覺面試互動很少,更多的時候是你在對著屏幕說話。
最開始的時候,我的思路是首先對給出的數組進行遍歷,當取得第一個元素的時候,將元素后面添加橫杠,然后與長度進行對比,如果長度超過了給定的長度的話那么就刪除橫杠后壓入需要返回的列表中。
如果長度少于返回的長度,那么再取出下一個元素,同時再結尾再添加橫桿后進行判斷,然后再確定橫杠的處理。
這個題目的主要問題就在于橫杠的處理,有時候橫杠在結尾,有時候橫杠在開頭,你需要一個一個判讀。
在隨后的測試中,我發現一直是橫杠處理不好,結果導致沒有完全通過最后的測試,就是上面測試用例的第二行。
因為這個題目時間有限,并且我們還不能使用 StringUtils 來進行一些快速的字符串處理,因此我沒有在規定的時間內完成所有的測試。在隨后結束面試后,我再仔細思考了下問題后發現其實我們還可以有其他的辦法來進行操作。
我使用下面的思路,并且完成了代碼的修改。
首先我們需要將輸入的數組變成一個長的字符串,單詞之間使用橫杠分隔。例如,[ “Hello”, “world” ] 將會變成字符串為:Hello-world。
在完成上面的操作后,我們需要使用一個 while 循環來做。
首先在 while 循環中判讀整個字符串長度小于給定的長度,這個時候需要直接返回,然后中斷循環。
下一步,對字符串,從頭到給定的長度進行截斷后獲得子字符串,隨后對子字符串進行判斷,如果這個子字符串是以橫杠結尾的話,刪除橫杠然后壓入需要返回的數組,然后更新需要處理的字符串為截斷后余下的字符串。
如果按照給定的長度進行截斷后,你獲得最后的一個字符不是橫杠,那么我們就知道你截斷到了單詞上,獲得的子字符串中,找到最后一個橫杠,然后獲得索引的 ID,在獲得這個索引的 ID 后對需要處理的字符串按照索引 ID 進行截斷。
然后刪除掉最后的橫杠壓入需要返回的列表中。
在余下的字符串中可能遇到的情況是目前你將會是橫杠開頭的,因此你還需要刪除掉余下字符串中開頭和結尾的橫杠。
繼續上面的處理,直到需要處理的字符串長度小于給定的長度后中斷循環。
上圖是對上面思路 2 中的算法進行測試后的返回結果,從結果中可以看到滿足需要輸出的預期。
到此,關于“如何搭建一個字符串包裹函數”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。