-4
我想寫一個使用Java 8的方法,它使用兩個參數,一個字符串和一個整數。該方法將返回另一個與輸入字符串相似的字符串,但刪除了某些字符。計算字符串中連續出現的字符java 8
它將從相同字符的連續運行中刪除字符,其中運行的長度大於輸入參數。
我可以使用簡單的Java for循環做到這一點,但我正在尋找一個使用Java 8特性的解決方案,可能是lambda表達式。例如,如果該方法的輸入是(「aaab」,2),那麼它應該返回「aab」,如果(「aabb」,1)應該返回「ab」。
使用for循環
public String eliminate(String S, int allowed) {
int count = 1;
StringBuilder sb = new StringBuilder();
try {
sb.append(S.charAt(0));
for (int i = 1; i < S.length(); i++) {
if (S.charAt(i) == S.charAt(i - 1)) {
if (count < allowed) {
sb.append(S.charAt(i));
count = count + 1;
}
} else {
sb.append(S.charAt(i));
count = 1;
}
}
} catch (StringIndexOutOfBoundsException e) {
e.printStackTrace();
}
return sb.toString();
}
歡迎計算器。請,你能提供一些你的具體問題的代碼嗎?這將有助於其他成員更好地瞭解您的問題,當時,您會爲他們提供您問題的背景。請檢查這些鏈接:https://stackoverflow.com/help/mcve和 https://stackoverflow.com/help/how-to-ask –
流是不是真的這個工作的最佳工具。當你可以獨立地以相同的方式處理很多元素(如集合的成員)時,流很棒。理想情況下,處理每個應該沒有副作用。當需要組合連續元素的信息(這對於計算相同字符的運行是必需的)時,請考慮使用循環而不是流。 –
我能夠做到這一點使用簡單的循環,但有什麼辦法可以使用Lambda表達式或Java 8中新增的功能來做同樣的事情。實際上,我需要處理很多元素,我簡化了解決方案並在此處發佈。 – user7945980