我對Codility進行了一次培訓挑戰,檢查字符串中括號的嵌套。要檢查的括號是{,},(,),[,]
。我寫了下面的通過O(n)時間和空間的Java程序,但我有一種感覺,我可以減少額外的空間。此外,我認爲必須有一個可以更高效地處理這種情況的數據結構。使用ArrayList而不是數組可能會有所幫助。我需要的是批評我的代碼。提前致謝。檢查括號嵌套在一個字符串中
這裏是我寫的代碼:
import java.util.HashMap;
class Solution {
public int solution(String S) {
char[] stack = new char[S.length()];
int last = -1;
HashMap hm = new HashMap();
hm.put('}', '{');
hm.put(')', '(');
hm.put(']', '[');
for(int i=0; i<S.length(); i++){
char next = S.charAt(i);
if(next == '}' || next == '{' || next == ')' || next == '(' ||
next == ']' || next == '[')
{
if(last!=-1 && hm.containsKey(next) && stack[last] == hm.get(next)){
last--;
}
else{
last++;
stack[last] = S.charAt(i);
}
}
}
if(last == -1){
return 1;
}
return 0;
}
}
如果代碼工作正常,你只是希望有人來改善它,看看[代碼審查](http://codereview.stackexchange.com/)。 – csmckelvey
通常,如果你正在尋找一個特殊的數據結構,你可以使用'Stack'。 –
@Takendarkk ..感謝您指導正確的地方。 – Pankaj