
class Solution {
public int[] solution(String myString) {
String[] pwd = myString.split("x", -1);
int[] answer = new int[pwd.length];
int index = 0;
for (String a : pwd) {
answer[index] = a.length();
index++;
}
return answer;
}
}
import java.util.ArrayList;
class Solution {
public int[] solution(String myString) {
ArrayList<Integer> answer = new ArrayList();
char[] pwd = myString.toCharArray();
int count = 0;
for (int i = 0; i < pwd.length; i++) {
if (pwd[i]!='x') {
count++;
} else {
answer.add(count);
count=0;
}
if ((i==pwd.length-1)) {
answer.add(count);
}
}
return answer.stream().mapToInt(Integer::intValue).toArray();
}
}
split(String regex) 그리고 split(String regex, int limit)이다.내가 평소 사용하던 split(Sting regex)는 split(String reget, int limit)를 호출하고 있다.

split의 작동원리
int off = 0;
int next = 0;
boolean limited = limit > 0;
ArrayList<String> list = new ArrayList<>();
while ((next = indexOf(ch, off)) != -1) {
if (!limited || list.size() < limit - 1) {
list.add(substring(off, next));
off = next + 1;
} else { // last one
//assert (list.size() == limit - 1);
int last = length();
list.add(substring(off, last));
off = last;
break;
}
}
// If no match was found, return this
if (off == 0)
return new String[]{this};
// Add remaining segment
if (!limited || list.size() < limit)
list.add(substring(off, length()));
int resultSize = list.size();
if (limit == 0) {
while (resultSize > 0 && list.get(resultSize - 1).isEmpty()) {
resultSize--;
}
}
String[] result = new String[resultSize];
return list.subList(0, resultSize).toArray(result);
import java.util.Arrays;
class Solution {
public int[] solution(String myString) {
return Arrays.stream(myString.split("x", -1))
.mapToInt(i -> i.length())
.toArray();
}
}