Java 刷題(二)
Codewars 刷題第二天,仍為字串問題:
第二期題目:
Polycarpus works as a DJ in the best Berland nightclub, and he often uses dubstep music in his performance. Recently, he has decided to take a couple of old songs and make dubstep remixes from them.
Let's assume that a song consists of some number of words. To make the dubstep remix of this song, Polycarpus inserts a certain number of words "WUB" before the first word of the song (the number may be zero), after the last word (the number may be zero), and between words (at least one between any pair of neighbouring words), and then the boy glues together all the words, including "WUB", in one string and plays the song at the club.
For example, a song with words "I AM X" can transform into a dubstep remix as "WUBWUBIWUBAMWUBWUBX" and cannot transform into "WUBWUBIAMWUBX".
Recently, Jonny has heard Polycarpus's new dubstep track, but since he isn't into modern music, he decided to find out what was the initial song that Polycarpus remixed. Help Jonny restore the original song.
Input
The input consists of a single non-empty string, consisting only of uppercase English letters, the string's length doesn't exceed 200 characters
Output
Return the words of the initial song that Polycarpus used to make a dubsteb remix. Separate the words with a space.
Examples
songDecoder("WUBWEWUBAREWUBWUBTHEWUBCHAMPIONSWUBMYWUBFRIENDWUB") // => WE ARE THE CHAMPIONS MY FRIEND
題目要求:
對長度不超過200的字串進行某一子串的處理,意味著將字串中的WUB字串去掉,恢復字串原有的形式;
解析:
子串意味著連續的三個字元,可以遍歷,判斷子串是否出現,並處理;
也可以直接用串匹配的方法進行處理!
答案(一):(已AC)
public static String SongDecoder (String song){
// Your code is here...
return song.replaceAll("(WUB)+", " ").trim();
}
}
答案(二):已AC
public static String SongDecoder (String song){
if (song.length() > 200 || song.isEmpty()) {
return "";
}
char[] songCharArr = song.toCharArray();
StringBuilder strBuilder = new StringBuilder();
boolean buildingWord = false;
int i = 0;
while (i < song.length()) {
if ((i < song.length()-2) && songCharArr[i] == 'W' && songCharArr[i+1] == 'U' && songCharArr[i+2] == 'B'){
if (buildingWord){
strBuilder.append(" ");
buildingWord = false;
}
i += 3;
} else {
strBuilder.append(songCharArr[i]);
buildingWord = true;
i += 1;
}
}
return strBuilder.toString().trim();
}
答案一:正則表示式使用直接替換掉(WUB)+ 在trim()掉首尾的空格;
答案二:通常的思路分析串的長度,以及WUB所在的位置是否為串頭,串尾,去掉之後是否為可輸出的內容(是否加空格);
相關推薦
Java 刷題(二)
Codewars 刷題第二天,仍為字串問題:第二期題目:Polycarpus works as a DJ in the best Berland nightclub, and he often uses dubstep music in his performance. Re
Java 刷題(一)
tinc abc 不同的 bsp for take collect long 區別 Codewars 刷題第一天,字符串問題: 題目: Take 2 strings s1 and s2 including only letters from ato z.
Java 刷題(五)
IE ont bubuko pic remove ins help int ace Codewars 刷題第五天,數組問題。 Enough is enough! Alice and Bob were on a holiday. Both of them took many
Python和Java程式設計題(二)
題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? 兔子的規律為數列1,1,2,3,5,8,13,21.... 觀察規律,可以發現,自從第三個月開始,每個月的兔子總數為前兩個月兔子總數之和。 Java實現
LeetCode刷題(二) —— 整數拆分
題目:給定一個正整數 n,將其拆分為至少兩個正整數的和,並使這些整數的乘積最大化。 返回你可以獲得的最大乘積。例如,給定 n = 2,返回1(2 = 1 + 1);給定 n = 10,返回36(10 = 3 + 3 + 4)。注意:你可以假設 n 不小於2且不大於58。分析:
LeetCode刷題(二)
LeetCode 是個著名的程式設計題庫,裡邊有很多面試、演算法題目,多刷刷對提高程式設計水平很有幫助,避免因為天天寫業務程式碼而停滯不前。最近玩了下挺有意思的,決定慢慢的刷起來,在這裡記錄一下我的刷
Python和Java編程題(二)
java實現 pytho return main %s 觀察 printf 16px oid 題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少? 兔子的規律為數列1,1,2,3
java面試每日十題(二)
11、switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? 答:switch可以作用於icsb(i see sb)上,即int、char、short、byte和他們的包裝類;不可作用於fdlb(伏地撈逼)上,即float、 dou
劍指Offer演算法題及答案Java完整版(二)
16、請設計一個函式,用來判斷在一個矩陣中是否存在一條包含某字串所有字元的路徑,路徑可以從矩陣中的任意一個格子開始,每一步可以在矩陣中向左,向右,向上,向下移動一個格子。如果一條路徑經過了矩陣中的某一個格子,則之後不能再次進入這個格子。例如 a b c e s f c s a d e e 這樣的
【精選】JAVA入門演算法題(二)
時時要有危機意識。別以為你命好運也好。 1.題目:打印出所有的 水仙花數 ,所謂 水仙花數 是指一個三位數,其各位數字立方和等於該數本身。 例如:153是一個 水仙花數 ,因為153=1的三次方+5的三次方+3的三次方。 題非常簡單,只要用for迴圈,取出數的個位、十位
java 筆試易錯題(二 )
接著之前總結的java筆試易錯題,後續會有好多,所以新起一篇。 後續會持續更新。。。 1、下面有關JVM記憶體,說法錯誤的是? A 程式計數器是一個比較小的記憶體區域,用於指示當前執行緒所執
藍橋杯刷題(入門)--java實現
/** 斐波那契數列數列,遞迴超時 採用陣列解決。 */ import java.util.*; public class Main{ public static long Fib(long i) { if(i==1) return 1; el
java學習筆記(二)圖形用戶接口
star strong per getwidth cep runnable graphics s2d gb2 這個學期主要放在ACM比賽上去了,比賽結束了。不知不覺就15周了,這周就要java考試了,復習一下java吧。java的學習的目的還是讓我們學以致用,讓我們可以
JAVA 內部類 (二)
匿名內部類 獨立 button strong 知識 desc ets .get xxx 一、為什麽要使用內部類 為什麽要使用內部類?在《Think in java》中有這樣一句話:使用內部類最吸引人的原因是:每個內部類都能獨立地繼承一個(接口的)實現,所以無論外
java設計模式(二)工廠模式
額外 mod 通過反射 pat 擴展 簡單實現 需要 factory actor 工廠模式是最常見的實例化對象的模式,用來替代new操作。采用這種模式創建對象會有一些額外的操作,但他會帶給系統更大的擴展性和更少的修改量。典型的應用spring bean容器。下面簡單實現
java面試題(二)
imap 產生 java面試 大型 過程 ets ibm apache服務 廣泛 11、說出Servlet的生命周期,並說出Servlet和CGI的區別? Servlet被服務器實例化後,容器運行其init方法,請求到達時運行其service方法,service方法自動派遣
Java學習筆記(二)-------String,StringBuffer,StringBuilder區別以及映射到的同步,異步相關知識
ringbuf 等待 java學習筆記 java學習 單線程 回復 改變 hashtable ble 1. String是不可變類,改變String變量中的值,相當於開辟了新的空間存放新的string變量 2. StringBuffer 可變的類,可以通過append方法改
Java包(package)(二)
net clas 控制 組織 容易 存儲方式 它的 如同 true 為了更好地組織類,Java 提供了包機制,用於區別類名的命名空間。 一個包(package)可以定義為一組相互聯系的類型(類、接口、枚舉和註釋) 使用包這種機制,更容易實現訪問控制,並且讓定位相關類更加簡單
Java語法糖(二)
version rgs tab uip class a void 文件名 私有 tail 語法糖之四:內部類 內部類:顧名思義,在類的內部在定義一個類。內部類僅僅是編譯時的概念,編譯成字節碼後,內部類會生成單獨的Class文件。 四種:成員內部類、局部內部類、匿名內
java基礎總結(二)---關鍵字
-- rem 關鍵字 rgs java err style ret 基礎總結 1.this 在java中, this 對象,它可以在類裏面來引用這個類的屬性和方法。 1.它在方法內部使用,即這個方法所屬的對象的引用。 2.它在構造器內部使用,表示該構造器正在初始