hideki.ikeda
BAN USERThree solutions
public static int sum_1(String data) {
java.util.regex.Pattern p = java.util.regex.Pattern.compile("[0-9]+");
java.util.regex.Matcher m = p.matcher(data);
int sum = 0;
while(m.find()) {
sum += Integer.parseInt(m.group());
}
return sum;
}
public static int sum_2(String data) {
boolean inNumber = false;
int sum = 0;
int start = 0;
for(int i = 0; i < data.length(); ++i) {
if(Character.isDigit(data.charAt(i))) {
if(!inNumber) {
start = i;
inNumber = true;
}
} else {
if(inNumber) {
sum += Integer.parseInt(data.substring(start, i));
inNumber = false;
}
}
}
if(inNumber)
sum += Integer.parseInt(data.substring(start));
return sum;
}
public static int sum_3(String data) {
int sum = 0;
int num = 0;
for(char c : data.toCharArray()) {
switch(c) {
case '0': num *= 10; break;
case '1': num *= 10; num += 1; break;
case '2': num *= 10; num += 2; break;
case '3': num *= 10; num += 3; break;
case '4': num *= 10; num += 4; break;
case '5': num *= 10; num += 5; break;
case '6': num *= 10; num += 6; break;
case '7': num *= 10; num += 7; break;
case '8': num *= 10; num += 8; break;
case '9': num *= 10; num += 9; break;
default:
sum += num;
num = 0;
break;
}
}
sum += num;
return sum;
}
Almost perfect, but it doesn't work with [1, 6, 2].
- hideki.ikeda April 16, 2015Don't insert 6 into the hashmap. Count the occurrences instead. If 6 appears twice or more, return true. If not, look for 12 - arr[i] in the hashmap.