软件分享网站,如何建设影视网站,百度关键词优化专家,自己做网站要办手续吗删除字符串的经典kotlin操作#xff1a;
val mTemp (temp.text).replace(Regex(℃),)
以下是题目#xff01;
1209. 删除字符串中的所有相邻重复项 II
提示
中等
174
相关企业
给你一个字符串 s#xff0c;「k 倍重复项删除操作」将会从 s…删除字符串的经典kotlin操作
val mTemp (temp.text).replace(Regex(℃),)
以下是题目
1209. 删除字符串中的所有相邻重复项 II
提示
中等
174
相关企业
给你一个字符串 s「k 倍重复项删除操作」将会从 s 中选择 k 个相邻且相等的字母并删除它们使被删去的字符串的左侧和右侧连在一起。
你需要对 s 重复进行无限次这样的删除操作直到无法继续为止。
在执行完所有删除操作后返回最终得到的字符串。
本题答案保证唯一。 示例 1
输入s abcd, k 2
输出abcd
解释没有要删除的内容。
示例 2
输入s deeedbbcccbdaa, k 3
输出aa
解释
先删除 eee 和 ccc得到 ddbbbdaa
再删除 bbb得到 dddaa
最后删除 ddd得到 aa
示例 3
输入s pbbcggttciiippooaais, k 2
输出ps提示
1 s.length 10^52 k 10^4s 中只含有小写英文字母。
通过次数
19.7K
提交次数
38.8K
通过率
50.8%
使用kotlin来解决
可以使用栈来解决这个问题。
首先定义一个数据类 CharWithCount用来表示字符和其出现的次数。然后遍历字符串对于每个字符如果栈顶元素和当前字符相同就将栈顶元素出栈将其出现次数加一否则将当前字符作为新的元素入栈。每次入栈或者出栈时要判断栈顶元素出现次数是否达到了 k如果是的话就将其出栈。
最后将栈中剩余的元素按顺序拼接成字符串即可。
class Solution {data class CharWithCount(val char: Char, var count: Int)fun removeDuplicates(s: String, k: Int): String {val stack mutableListOfCharWithCount()for (c in s) {if (stack.isNotEmpty() stack.last().char c) {val last stack.last()last.count 1if (last.count k) {stack.remove(stack.last())}} else {stack.add(CharWithCount(c, 1))}}val sb StringBuilder()for (c in stack) {sb.append(c.char.toString().repeat(c.count))}return sb.toString()}
}
使用C来解决
class Solution {typedef pairchar,int PSI;
public:string removeDuplicates(string s, int k) {stackPSI st;for(auto c:s){if(!st.empty() st.top().firstc){PSI tempst.top();temp.second1;st.pop();if(temp.secondk){st.push(temp);}}else{st.push({c,1});}}string res;while(!st.empty()){PSI tempst.top();st.pop();for(int i0;itemp.second;i){restemp.first;}}reverse(res.begin(),res.end());return res;}
};
对比学习着kotlin的语法确实简洁很多。