题目形容
给你一个由大小写英文字母组成的字符串 s。
一个整顿好的字符串中,两个相邻字符 s[i] 和 s[i + 1] 不会同时满足下述条件:
0 <= i <= s.length – 2
s[i] 是小写字符,但 s[i + 1] 是雷同的大写字符;反之亦然。
请你将字符串整顿好,每次你都能够从字符串中选出满足上述条件的 两个相邻 字符并删除,直到字符串整顿好为止。
请返回整顿好的 字符串。题目保障在给出的约束条件下,测试样例对应的答案是惟一的。
留神:空字符串也属于整顿好的字符串,只管其中没有任何字符。
题目解读:去除字符串中含有大小写在一起的字符,包含删除局部字符后的字符串
崩溃思路:
看题目形容,就是应用栈来解决,应用栈顶元素和入栈的数据进行比照,看是否满足互为大小写的关系,当栈外面没有数据的时候,须要取字符串的下一个字符,在编程的时候须要解决下,不然容易造成思路上的困扰
应用字符数组做栈来解决,应用游标来管制栈,实现相似弹栈和压栈的操作
语言积攒
应用 StringBuilder 构建字符串,这样效率更高
Math.abs() 直接判断是否为小大写关系,不必先进行大小写判断
vscode 代码链接
https://github.com/lunaDolphin/leetcode/tree/master/stack_makeGood_1544