1544. 整理字符串

题目


一个整理好的字符串中,两个相邻字符 s[i] 和 s[i+1],其中 0<= i <= s.length-2 ,要满足如下条件:

若 s[i] 是小写字符,则 s[i+1] 不可以是相同的大写字符。
若 s[i] 是大写字符,则 s[i+1] 不可以是相同的小写字符。
请你将字符串整理好,每次你都可以从字符串中选出满足上述条件的 两个相邻 字符并删除,直到字符串整理好为止。

请返回整理好的 字符串 。题目保证在给出的约束条件下,测试样例对应的答案是唯一的。

注意:空字符串也属于整理好的字符串,尽管其中没有任何字符。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/make-the-string-great
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

代码

class Solution
{
    public String makeGood(String s)
    {
        StringBuilder sb = new StringBuilder();
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < s.length(); i++)
        {
            if (stack.isEmpty())
            {
                stack.push(s.charAt(i));
                sb.append(s.charAt(i));
            }
            else
            {
                if (stack.peek() == s.charAt(i) + 32 || stack.peek() == s.charAt(i) - 32)
                {
                    stack.pop();
                    sb.deleteCharAt(sb.length() - 1);
                }
                else
                {
                    stack.push(s.charAt(i));
                    sb.append(s.charAt(i));
                }
            }
        }
        return sb.toString();
    }
}

思路

当栈为空时,就往栈、sb里添加元素,如果不为空时,就开始判断栈顶元素与字符串对应的字符是否存在题目要求的关系,如果存在就继续退栈、删sb里的字符,直到循环结束

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi是一种编程语言,它也支持字符串类型的操作。字符串整理是指对字符串进行处理、组织和格式化的过程。 在Delphi中,可以使用字符数组或字符串变量来表示字符串。通过使用字符串函数和过程,我们可以对字符串进行整理。 常见的字符串整理操作包括以下几种: 1. 字符串拼接:可以使用加号(+)操作符将多个字符串连接在一起。例如,可以将两个字符串变量concatenate起来形成一个新的字符串。 2. 字符串截取:可以使用常用的字符串函数如Copy、Pos和Substring等,截取字符串中的一部分。通过指定起始和结束位置,我们可以选取需要的子字符串。 3. 字符串替换:使用字符串函数如StringReplace可以将字符串中的指定内容替换为其他内容。可以指定搜索的起始位置,以及替换的次数。 4. 字符串分割:可以使用StringSplit函数将字符串分割成多个子字符串,并存储到一个字符串列表中。可以指定分隔符,将字符串按照某种规则进行分割。 5. 字符串格式化:可以使用Format函数将一些值插入到字符串中的特定位置。通过使用占位符和参数列表,可以根据需要在字符串中插入变量或其他值。 6. 字符串转换:可以使用StrToInt、IntToStr等函数将字符串转换为整数或其他类型的值。这在处理用户输入或将数值存储为字符串时非常有用。 总之,Delphi提供了许多字符串处理的函数和过程,可以用来整理字符串。开发者可以根据自己的需求选择适合的方法来操作、组织和格式化字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值