题目链接:3612. 用特殊操作处理字符串 I(中等)
算法原理:
解法:模拟
4ms击败100.00%
时间复杂度O(2ⁿ),其中 n 是 s 的长度,最坏情况下把一个字符复制 n-1 次,得到长为 2ⁿ⁻¹ 的字符串,这个过程的时间为等比数列之和O(1+2+4+8+......)=O(2ⁿ)
注意字符串为空的时候,不能删除最后一个字母(否则会报错)
Java代码:
java
class Solution {
//3612. 用特殊操作处理字符串 I
public String processStr(String s) {
StringBuffer cur=new StringBuffer();
for(char c:s.toCharArray()){
if(c=='*'){
//多套一个 if 防止非小写字母进入 else 里
if(!cur.isEmpty())
cur.setLength(cur.length()-1);
}
else if(c=='#') cur.append(cur);
else if(c=='%') cur.reverse();
else cur.append(c);
}
return cur.toString();
}
}