我建议的第一件事是将这个字符串分解成更易于管理的部分,如下所示:
String s = "x1x1x1x1a1a1x1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1";
String[] splitS = s.split("1");
//Contents of the array are: [x, x, x, x, a, a, x, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a, a]
//We can now loop through each string in the string array and count how many we have of what
ArrayList<String> values = new ArrayList<String>();
int start = 0, end = 0, grandCounter = 0;
String current = splitS[0];
for(int i = 1; i < splitS.length-1; i++){
if(!splitS[i].equals("x") && current.equals("x")){
end = i;
values.add("x" + (end - start));
grandCounter += (end-start);
start = end;
end = 0;
current = "a";
} else if(!splitS[i].equals("a") && current.equals("a")){
end = i;
values.add("a" + (end - start));
start = end;
end = 0;
current = "x";
grandCounter += (end-start);
}
}
values.add( "a" + (splitS.length-grandCounter) + "");
System.out.println(values.toString().replace("[", "").replace(",", "").replace("]", "").replace(" ", ""));
上面的代码在控制台打印时准确返回以下内容:x4a2x1a58
如果您对您的工作有任何其他疑问或问题,请告诉我!