
对于字符串的’ * ‘, 删除离它最近的左侧的字母,并删除’ * '本身。
返回删除所有‘ * ’之后的string.
操作总是有效的。
思路:
因为遇到’ * ‘删除的是它最近的左侧的字母,
想到用stack, 遇到’ * '就出栈一个字母,否则入栈。
因为操作总是有效的,不用考虑操作过程中栈为空的情况。
用数组模拟stack.
public String removeStars(String s) {
int n = s.length();
char[] st = new char[n];
int head = -1;
for(int i = 0; i < n;i ++) {
char ch = s.charAt(i);
if(ch == '*') head --;
else st[++head] = ch;
}
return String.valueOf(st,0,head+1); //param: char arr, offset, count
}
该文章介绍了一个Java方法,用于处理字符串,当遇到*时删除其左侧最近的字符。方法使用栈数据结构,遇到*则从栈顶弹出一个字符,非*则压入栈中。最后返回去除了*和其左侧字符的新字符串。
476

被折叠的 条评论
为什么被折叠?



