本文主要記錄一下leetcode之整理字符串網絡
給你一個由大小寫英文字母組成的字符串 s 。 一個整理好的字符串中,兩個相鄰字符 s[i] 和 s[i+1],其中 0<= i <= s.length-2 ,要知足以下條件: 若 s[i] 是小寫字符,則 s[i+1] 不能夠是相同的大寫字符。 若 s[i] 是大寫字符,則 s[i+1] 不能夠是相同的小寫字符。 請你將字符串整理好,每次你均可以從字符串中選出知足上述條件的 兩個相鄰 字符並刪除,直到字符串整理好爲止。 請返回整理好的 字符串 。題目保證在給出的約束條件下,測試樣例對應的答案是惟一的。 注意:空字符串也屬於整理好的字符串,儘管其中沒有任何字符。 示例 1: 輸入:s = "leEeetcode" 輸出:"leetcode" 解釋:不管你第一次選的是 i = 1 仍是 i = 2,都會使 "leEeetcode" 縮減爲 "leetcode" 。 示例 2: 輸入:s = "abBAcC" 輸出:"" 解釋:存在多種不一樣狀況,但全部的狀況都會致使相同的結果。例如: "abBAcC" --> "aAcC" --> "cC" --> "" "abBAcC" --> "abBA" --> "aA" --> "" 示例 3: 輸入:s = "s" 輸出:"s" 提示: 1 <= s.length <= 100 s 只包含小寫和大寫英文字母 來源:力扣(LeetCode) 連接:https://leetcode-cn.com/problems/make-the-string-great 著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。
class Solution { int delta = 'a' - 'A'; public String makeGood(String s) { StringBuilder builder = new StringBuilder(s); int len = -1; while (len != builder.length()) { len = builder.length(); for (int i = 0; i < builder.length() -1; i++) { if (Math.abs(builder.charAt(i) - builder.charAt(i+1)) == delta) { builder.delete(i,i+2); break; } } } return builder.toString(); } }
這裏採起while循環,在遍歷builder沒有刪除字符的時候跳出循環,在遍歷builder的時候,對比相鄰的char,都符合條件則刪除。測試