本文主要是介绍【数据结构与算法 | 每日一题力扣篇】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 力扣3174:清楚数字
1.1 题目:
给你一个字符串 s
。
你的任务是重复以下操作删除 所有 数字字符:
- 删除 第一个数字字符 以及它左边 最近 的 非数字 字符。
请你返回删除所有数字字符以后剩下的字符串。
示例 1:
输入:s = "abc"
输出:"abc"
解释:
字符串中没有数字。
示例 2:
输入:s = "cb34"
输出:""
解释:
一开始,我们对 s[2]
执行操作,s
变为 "c4"
。
然后对 s[1]
执行操作,s
变为 ""
。
提示:
1 <= s.length <= 100
s
只包含小写英文字母和数字字符。- 输入保证所有数字都可以按以上操作被删除。
1.2 思路
用栈即可很轻松解决该题,最后将得到的字符数组反转过来即可。
1.3 题解:
class Solution {public String clearDigits(String s) {Deque<Character> deque = new LinkedList<>();for(int i = 0; i < s.length(); i++) {char ch = s.charAt(i);if(ch >= 'A' && ch <= 'z' || ch >= 'A' && ch <= 'Z'){deque.push(ch);} else {deque.pop();}}char[] arr = new char[deque.size()];int k = 0;while(deque.size() > 0){arr[k++] = deque.pop();}return new String(reverse(arr));}private char[] reverse(char[] arr) {int j = arr.length - 1;for(int i = 0; i < arr.length / 2; i++) {char temp;temp = arr[i];arr[i] = arr[j];arr[j] = temp;j--;}return arr;}
}
这篇关于【数据结构与算法 | 每日一题力扣篇】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!