题解 | #万万没想到之聪明的编辑#
万万没想到之聪明的编辑
http://www.nowcoder.com/questionTerminal/42852fd7045c442192fa89404ab42e92
分组循环,把连续相同的字符分到一组。
数量>=2的,如果前面是==2的,就减到1,否则就减到2个。
用boolean f 来标记上一个字符的连续数量。
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
while (t-- != 0) {
String s = in.next();
StringBuilder res = new StringBuilder();
boolean f = false;
for (int i = 0; i < s.length(); ++i) {
int j = i + 1;
while (j < s.length() && s.charAt(i) == s.charAt(j)) j++;
if (j == i + 1) {
res.append(s.charAt(i));
f = false;
} else {
if (f) {
// 减到1个
res.append(s.charAt(i));
f = false;
} else {
// 减到两个
res.append(s.substring(i, i + 2));
f = true;
}
}
i = j - 1;
}
System.out.println(res.toString());
}
}
}