L944 删列造序
GitHub 账户:LuvnJoae 欢迎关注! https://github.com/LuvnJoae
GitHub 代码链接:https://github.com/LuvnJoae/Java_leetcode
思路与结果
代码思路1
package Day19_7_16.L944;
/**
* 思路一
1. 把字符串数组遍历嵌套,一列一列的比较
a. 每一列的后一个字符比前一个字符大
b. 设置一个计数器
反思
不该每次都转charArray,又花时间又花内存
*/
public class Solution {
public int minDeletionSize(String[] A) {
if (A == null) return 0;
int count = 0;
for (int i = 0; i < A[0].length(); i++) {
for (int i1 = 0; i1 < A.length-1; i1++) {
if (A[i1+1].toCharArray()[i] < A[i1].toCharArray()[i]){
count++;
break;
}
}
}
return count;
}
public static void main(String[] args) {
String[] A = {"zyx", "wvu", "tsr"};
int a = new Solution().minDeletionSize(A);
System.out.println(a);
}
}
代码思路2
package Day19_7_16.L944;
/**
* 思路二
反思
1. 和第一种思路一样,不同之处是 用charAt(i)方法代替了toCharArray,这样就避免了每次都转成数组耗费的时间和空间。
思路三和二一样,只不过把首字母提出来放在了外面。
*/
public class Solution2 {
public int minDeletionSize(String[] A) {
if (A == null) return 0;
int count = 0;
for (int i = 0; i < A[0].length(); i++) {
for (int i1 = 0; i1 < A.length-1; i1++) {
if (A[i1 + 1].charAt(i) > A[i1].charAt(i)){
count++;
break;
}
}
}
return count;
}
public static void main(String[] args) {
String[] A = {"zyx", "wvu", "tsr"};
// int a = new Solution().minDeletionSize(A);
System.out.println(new Solution().minDeletionSize(A));
}
}
代码思路3
package Day19_7_16.L944;
public class Solution3 {
public int minDeletionSize(String[] A) {
if (A == null) return 0;
int count = 0;
for (int i = 0; i < A[0].length(); i++) {
char c = A[0].charAt(i);
for (int i1 = 1; i1 < A.length; i1++) {
if (c > A[i1].charAt(i)){
count++;
break;
}
c = A[0].charAt(i);
}
}
return count;
}
public static void main(String[] args) {
String[] A = {"zyx", "wvu", "tsr"};
int a = new Solution().minDeletionSize(A);
System.out.println(a);
}
}