题目
给出一个有1-9的数字组成的字符串,相邻的两个数字和为10时可以被消去。问最后字符的长度时多少?
例如:213792,第一步可以消成2192,第二步消解为22.所以长度为2
我是想用双指针来求解,但最后一直只有20%左右的case通过,求求大佬解惑。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLine()){
int n = Integer.parseInt(in.nextLine());
String number = in.nextLine();
Solution solution = new Solution();
solution.lengthOfNum(number,n);
}
}
}
class Solution{
public void lengthOfNum(String number,int n){
char[] chars = number.toCharArray();
int[] num = new int[n];
for (int i = 0; i < n; i++) {
num[i] = chars[i]-'0';
}
if (n==1) {
System.out.println(1);
return;
}
int count=0;
int prePointer = 0;
int postPointer = 1;
while (postPointer<n){
if (num[prePointer]+num[postPointer]==10) {
num[prePointer--]=0;
num[postPointer++]=0;
if (prePointer<0) {
prePointer=postPointer;
postPointer++;
continue;
}
continue;
}
prePointer++;
postPointer++;
}
for (int i = 0; i < n; i++) {
if (num[i]!=0) count++;
}
if(count==n){
System.out.println("不能消除");
}else{
System.out.println(count);
}
}
}