291场周赛❤️
简单麻烦题
学习一下大佬的贪心
class Solution {
public String removeDigit(String number, char digit) {
int last = 0;
int n = number.length();
char[] arr = number.toCharArray();
for(int i = 0; i < n; i ++){
if(arr[i] == digit){
last = i;
if(i == n - 1 || arr[i + 1] > arr[i]){
return number.substring(0, i) + number.substring(i + 1, n);
}
}
}
return number.substring(0, last) + number.substring(last + 1, n);
}
}
周赛时候自己的麻烦做法
class Solution {
public String removeDigit(String number, char digit) {
int n = number.length();
char[] cs = new char[n];
for(int i = 0; i < n; i ++){
cs[i] = number.charAt(i);
}
char[] a = new char[n - 1];
char[] b = new char[n - 1];
for (int i = 0; i < n; i++) {
if (cs[i] == digit) {
for (int j = 0; j < n; j++) {
if (j < i) b[j] = cs[j];
else if (j > i) b[j - 1] = cs[j];
}
if (com(b, a)) {
for (int j = 0; j < n - 1; j++) a[j] = b[j];
}
}
}
return new String(a);
}
boolean com(char[] b, char[] a) {
for (int i = 0; i < a.length; i++) {
if (b[i] > a[i]) return true;
if (b[i] == a[i]) continue;
else break;
}
return false;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)