【发布时间】:2017-02-14 16:39:32
【问题描述】:
我正在解决一个问题,以将形式简化为不可简化的形式。这就是问题所在。
Shil 有一个字符串 S ,由 N 个小写英文字母组成。在一次操作中,他可以删除任意一对具有相同值的相邻字母。例如,字符串“aabcc”在操作后会变成“aab”或“bcc”。
Shil 想尽可能地减少 S。为此,他将尽可能多地重复上述操作。通过查找和打印 的不可约形式来帮助 Shil!
如果最终字符串为空,则打印 Empty String;否则,打印最终的不可约字符串。
样本输入 0
aaabccddd
样本输出 0
abd
示例输入 1
呸
样本输出 1
空字符串
示例输入 2
aa
样本输出 2
空字符串
解释
示例案例 0: Shil 可以执行以下一系列操作来得到最终的字符串:
因此,我们打印。
示例案例 1: Shil 可以执行以下操作序列来获取最终字符串: aaabccddd -> abccddd
abccddd -> abddd
abddd -> abd
因此我们打印 abd
示例案例 1: baab -> bb
bb -> 空字符串。
到目前为止我所做的是尝试通过Java中的StringBuilder来解决它。但是一些测试用例通过而其他的没有,我无法找出错误是什么?
这是我目前尝试过的代码。
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
StringBuilder sb = new StringBuilder(scan.nextLine());
for(int i = 0; i < sb.length()-1; i++)
{
if(sb.charAt(i) == sb.charAt(i+1))
sb.delete(i,i+2);
i = 0;
}
if(sb.length() == 0)
System.out.println("Empty String");
else
System.out.println(sb.toString());
}
}
aaabccddd
等输入和 aa 通过。但是当输入为 baab 时失败。
【问题讨论】:
-
我运行了你的程序,它似乎将你的输入字符串“baab”的输出打印为“bb”
-
这是一个挑战,但这里有一个来自github hackerrank.com/challenges/reduced-string和github.com/shengmin/coding-problem/tree/master/hackerrank/…的解决方案
-
“baab”不应该产生“b”吗?
-
不,如果是“baab”,它应该打印空字符串。
-
我正在从那里解决挑战。但我不想看到解决方案。我需要知道我是否可以通过我正在尝试的这种方法解决,如果可以,我在做什么错了吗?
标签: java string stringbuilder