从任意字符串中去掉有回文的子串

i-java 发布于 2013/09/24 16:25
阅读 1K+
收藏 0
如题,假设有字符串“abccbd”,则去掉“bccb”变成“ad”,“aa”的话则变成“”,请问用java怎样实现这样的算法啊?
加载中
0
redraiment
redraiment

在来一个简洁的版本,使用正则表达式:

public class RegexMain {
    public static void main(String[] args) {
        String word = args[0];

        while (true) {
            int size = word.length();
            word = word.replaceAll("(.)(?!\\1).\\1", "").replaceAll("(.)\\1+", "");
            if (size == word.length()) {
                break;
            }
        }
        System.out.println(word);
    }
}
能处理12111、abccbd等情况
中山野鬼
中山野鬼
回复 @晓骏 : 这不是正则问题。哈。
首席安全砖家
首席安全砖家
正则灰常漂亮
算法与编程之美
算法与编程之美
回复 @redraiment : 恩,非常不错,加油!
redraiment
redraiment
@justin_cn 这段Java比你的C简洁吧
1
adler
adler
你需要的是一个栈,每次入栈的和栈顶元素相同,则不入栈,并且弹出栈顶元素,反之则入栈;最后栈里就是你想要的结果
0
0
i-java
i-java

引用来自“郭幻程”的答案

米看懂
哪里没看懂?
0
郭幻程
郭幻程
重复的删,删到没重复的为止。
最拽猫咪
最拽猫咪
重复的和回文是2回事,你理解错了
0
i-java
i-java

引用来自“郭幻程”的答案

重复的删,删到没重复的为止。
是的,直到字符串不包含回文为止。
0
郭幻程
郭幻程

引用来自“henghanan”的答案

引用来自“郭幻程”的答案

重复的删,删到没重复的为止。
是的,直到字符串不包含回文为止。

对啊,不用什么算法吧

abccbd->abbd->ad

aabbcc>aacc->cc->""

0
Kabie
Kabie

定义就有问题……

`121` 算回文吗

0
i-java
i-java

引用来自“Kabie”的答案

定义就有问题……

`121` 算回文吗

算,对称了呀,要删掉1
i-java
i-java
回复 @Kabie : 这个不太清楚,2要不要删啊?没问面试官。。。当时都不会了。。。
Kabie
Kabie
难道不是 `121` 整个删掉? 而且……一般的回文定义 `1` 就已经是回文了吧……
0
i-java
i-java

引用来自“郭幻程”的答案

引用来自“henghanan”的答案

引用来自“郭幻程”的答案

重复的删,删到没重复的为止。
是的,直到字符串不包含回文为止。

对啊,不用什么算法吧

abccbd->abbd->ad

aabbcc>aacc->cc->""

那121怎么删?
返回顶部
顶部