首页 > 其他分享 >leetcode1963. 使字符串平衡的最小交换次数

leetcode1963. 使字符串平衡的最小交换次数

时间:2024-11-18 13:47:41浏览次数:3  
标签:下标 括号 length 次数 leetcode1963 字符串 平衡 stack

给你一个字符串 s ,下标从 0 开始 ,且长度为偶数 n 。字符串 恰好 由 n / 2 个开括号 '[' 和 n / 2 个闭括号 ']' 组成。

只有能满足下述所有条件的字符串才能称为 平衡字符串 :

  • 字符串是一个空字符串,或者
  • 字符串可以记作 AB ,其中 A 和 B 都是 平衡字符串 ,或者
  • 字符串可以写成 [C] ,其中 C 是一个 平衡字符串 。

你可以交换 任意 两个下标所对应的括号 任意 次数。

返回使 s 变成 平衡字符串 所需要的 最小 交换次数。

示例 1:

输入:s = "][]["
输出:1
解释:交换下标 0 和下标 3 对应的括号,可以使字符串变成平衡字符串。
最终字符串变成 "[[]]" 。

示例 2:

输入:s = "]]][[["
输出:2
解释:执行下述操作可以使字符串变成平衡字符串:
- 交换下标 0 和下标 4 对应的括号,s = "[]][][" 。
- 交换下标 1 和下标 5 对应的括号,s = "[[][]]" 。
最终字符串变成 "[[][]]" 。

示例 3:

输入:s = "[]"
输出:0
解释:这个字符串已经是平衡字符串。
/**
 * @param {string} s
 * @return {number}
 */
var minSwaps = function(s) {
    let stack = [];
    for(let i = 0;i < s.length;i++){
        if(stack.length && stack[stack.length - 1] === '[' && s[i] == ']'){
            stack.pop()
        }else{
            stack.push(s[i]);
        }
    }
    let str = stack.join("");
    return Math.ceil(str.length / 4);
};

标签:下标,括号,length,次数,leetcode1963,字符串,平衡,stack
From: https://blog.csdn.net/Turboyiyi/article/details/143855025

相关文章

  • Java 基础 - 字符串类
    字符串类重要的字符串类有String、StringBuilder、StringBuffer1、StringString是不可变类,内部是由final定义的字符数据构成。privatefinalcharvalue[];1.1String类的层次结构如下:String实现了比较接口,字符序列接口,序列化接口,具有以上接口的特性1.2重写了Obje......
  • Scala字符串练习题
    objectStringManipulationExamples{defmain(args:Array[String]):Unit={//问题1valfloatString="3.14"valfloatValue=floatString.toFloatvalbackToString=floatValue.toStringprintln(backToString)//问题2v......
  • 删除字符串中的所有相邻重复项--栈与队列
    第一版的代码如下下:点击查看代码classSolution{public:stringremoveDuplicates(strings){stack<char>str;for(inti=0;i<s.size();i++){//要先判断才能进行压栈,再次记住栈一定要先判断是否为空i......
  • shell(2)永久环境变量和字符串显位
    ......
  • 将数值转换为字符串的函数
    在C++中,itoa和sprintf是用于将数值转换为字符串的经典函数。然而,它们有一定的局限性或者安全性问题,现代C++更倾向于使用标准库的解决方案,如std::to_string和std::stringstream,来代替这些函数。可以看看这篇博客streamstring类介绍1.itoa的替代itoa是一种将整数转......
  • (nice!!!)(LeetCode) 3240. 最少翻转次数使二进制矩阵回文 II (分类讨论、数组)
    题目:3240.最少翻转次数使二进制矩阵回文II思路:分类讨论,需要对行和列的个数进行讨论,时间复杂度为0(nm),细节看注释。C++版本:classSolution{public:intminFlips(vector<vector<int>>&grid){intans=0;intn=grid.size(),m=grid[0].size();......
  • (LeetCode 热题 100) 49. 字母异位词分组(哈希表、字符串)
    题目:49.字母异位词分组思路:哈希表。将每个字符串升序排序,然后采用哈希表即可。C++版本:classSolution{public:vector<vector<string>>groupAnagrams(vector<string>&strs){ //哈希表unordered_map<string,vector<string>>mp;//遍历......
  • 【python系列】python数据类型之字符串
    1.前言字符串是编程中最常用的数据类型,这章需要针对字符串进行讲解。字符串的定义:字符串(英语:string),是由零个或多个字符组成的有限序列。——Wikipediapython官方文档:https://docs.python.org/zh-cn/3.10/library/stdtypes.html#text-sequence-type-str字符串是由Un......
  • 构造方法,static,final关键字,字符串拼接,基本数据类型、包装类转String,String转基本
    1.构造方法的特点1.每一个类都至少有一个构造方法,默认是无参的构造方法。一旦写了有参的构造方法,那么无参的构造方法就丢失了,需要自己显式的写出无参构造方法。一般只要是显式写出构造方法,无参的构造方法是必须要构造的。2、构造方法,方法名必须和类名保持一致,并且没有返回值,......
  • C语言进阶3:字符串+内存函数
    本章重点求字符串长度strlen长度不受限制的字符串函数strcpystrcatstrcmp长度受限制的字符串函数strncpystrncatstrncmp字符串查找strstrstrtok误信息报告strerror字符操作内存操作memcpymemmovememcmpmemset0.前言:C语言中对字符和字符串的处理很是......