java如何不開闢記憶體空間,處理超長字串順序?

時間 2021-05-29 23:22:02

1樓:寫程式碼的大咕咕

不開闢記憶體空間,那麼問題來了,是不能開闢堆內記憶體還是堆外記憶體也不能開闢呢?

如果是都不能開闢,那麼這個問題似乎沒什麼價值,只能用乙個古老的RandomAccessFile類,具體思路在@博唯的回答裡已經很清楚了。

如果可以使用堆外記憶體,使用directByteBuffer處理即可。

2樓:博唯

這似乎是乙個可笑的問題:都把乙個超長的字串全部入記憶體了(通過String str=...),卻想著不開闢記憶體空間來處理。

不如這麼問:

如何用O(1)的空間複雜度,來處理長度為n的超長文字?

設有檔案strA.txt,其內容是乙個空格分隔的超長字串

哈哈嘻嘻嘻我哦都挖的大撒大撒實打實大蘇打發來了了打 ……

現在需通過反轉處理,輸出為檔案strB.txt

…… 來了了打實打實大蘇打發大撒大撒我哦都挖的嘻嘻嘻哈哈

提問題,與答問題一樣,也得要技術含量。如果這麼問,答案就明確多了,一種實現的大體思路是:

採用RandomAccessFile讀檔案strA.txt,從檔案尾到檔案頭,一頁一頁地讀,每頁65536個位元組

把指標移到要讀的一頁,讀出乙個位元組陣列,再將位元組陣列解碼成字串(考慮兩側不能組成完整字元的位元組)

對字串作反轉處理

把反轉結果寫入檔案strB.txt

如上三步往復迴圈,並考慮收尾。

3樓:topgao

strB = Arrays.stream(strA.split(' '))

.reversed()

.toArray(String::new)

知乎為何不開闢徵婚區或提供徵婚服務?

開闢徵婚版面就是對精英的侮辱,知乎的精英群體掌握大量的社會資源,對於談婚論嫁,是不存在經濟基礎的問題的。在這裡的乙個問答,還不如在大學門口停輛豪車來的簡單粗暴,題主提的這個問題屬於種地主家的地,操少爺少奶奶的心。安心做好佃農,別想入非非 夙砂酒 同覺得應該開闢這樣的板塊,所有我xx條件可以找到什麼樣...

如何不讓工作上不開心的事情影響自己的心情?

燕園博思張熙陽 工作上不開心的是一定會影響自己的心情的,這都是非常正常的情緒。不開心的事不知道什麼時候就會發生,我們只能用一些辦法減弱它們對自己的影響。找人傾訴,尋求幫助,積極溝通,這些都有助於緩解不良情緒。 應該是經歷的太少,還有就是心態的轉換。換個方式處理問題。工作就是工作,不行就改變策略。現在...

如何不妒忌?

賢虎 作為乙個初學佛者,試著說幾句。妒忌別人,無非是拿自己與別人比較,別人比自己聰明漂亮能幹 比自己幸運 比自己有錢等等,這個,佛教的觀點是人生通三世,也就是每個人都是有前生有來世的,他今生現在有這樣的果,那是因為他以前或前世種了這樣的因,如是因感如是果而己,如果你也希望象他那樣,那就要修得到這樣果...