Problem Statement | |||||||||||||
The Incas used a sophisticated system of record keeping consisting of bundles of knotted cords. Such a bundle of cords is called a quipu. Each individual cord represents a single number. Surprisingly, the Incas used a base-10 positional system, just like we do today. Each digit of a number is represented by a cluster of adjacent knots, with spaces between neighboring clusters. The digit is determined by the number of knots in the cluster. For example, the number 243 would be represented by a cord with knots tied in the following pattern -XX-XXXX-XXX-where each uppercase 'X' represents a knot and each '-' represents an unknotted segment of cord (all quotes for clarity only). Unlike many ancient civilizations, the Incas were aware of the concept of zero, and used it in their quipus. A zero is represented by a cluster containing no knots. For example, the number 204003 would be represented by a cord with knots tied in the following pattern -XX--XXXX---XXX- ^^ ^^^ ^^ ^^^ ^^ two zeros between these three segments ^^ one zero between these two segmentsNotice how adjacent dashes signal the presence of a zero. Your task is to translate a single quipu cord into an integer. The cord will be given as a String knots containing only the characters 'X' and '-'. There will be a single '-' between each cluster of 'X's, as well as a leading '-' and a trailing '-'. The first cluster will not be empty. | |||||||||||||
Definition | |||||||||||||
| |||||||||||||
Constraints | |||||||||||||
- | knots contains between 3 and 50 characters, inclusive. | ||||||||||||
- | knots contains only the characters 'X' and '-'. Note that 'X' is uppercase. | ||||||||||||
- | The first and last characters of knots are '-'s. The second character is 'X'. | ||||||||||||
- | knots does not contain 10 consecutive 'X's. | ||||||||||||
- | knots will represent a number between 1 and 1000000, inclusive. | ||||||||||||
Examples | |||||||||||||
0) | |||||||||||||
| |||||||||||||
1) | |||||||||||||
| |||||||||||||
2) | |||||||||||||
| |||||||||||||
3) | |||||||||||||
| |||||||||||||
4) | |||||||||||||
|
This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2003, TopCoder, Inc. All rights reserved.
还是要仔细啊,,,提交了两次
public class Quipu {
public final static char X = 'X';
public final static char M = '-';
public static int readKnots(String knots) {
StringBuilder sb = new StringBuilder();
int x = 0;
int minus = 0;
int len = knots.length();
boolean currentX = true;
char ch;
for (int i = 1; i < len - 1; i++) {
ch = knots.charAt(i);
if (currentX) {
if (ch == X) {
x++;
if (i == len - 2) {
sb.append(x);
}
} else {
minus++;
sb.append(x);
if (i == len - 2) {
for (int k = 0; k < minus; k++)
sb.append('0');
}
x = 0;
currentX = false;
}
} else {
if (ch == M) {
minus++;
if (i == len - 2) {
for (int k = 0; k < minus; k++)
sb.append('0');
}
} else {
x++;
currentX = true;
if (i == len - 2) {
sb.append(x);
}
if (minus > 1) {
for (int k = 0; k < minus - 1; k++)
sb.append('0');
}
minus = 0;
}
}
}
return Integer.parseInt(sb.toString());
}
}