码迷,mamicode.com
首页 > 编程语言 > 详细

今天面试问了一道题。说一串字符串由这几个符号组成"<>{}[]()”,写一个算法,例如如果组成方式为“<>{[]}{}()”这种,也就是XML格式那种则返回true。否则返回false;

时间:2017-06-09 19:24:03      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:images   int   turn   回文   har   今天   符号   logs   结果   

原创

今天面试问了一道题。说一串字符串由这几个符号组成"<>{}[]()”,写一个算法,例如如果组成方式为“<>{[]}{}()”这种,也就是XML格式那种则返回true。否则返回false;

当时没想出来, 只想到了回文数解决办法。回文数解决办法是颠倒比较,相等为true;

换xml格式当时真没想到啥好方法;

在回来的路上想到了。。

。。

去重,吧临近的一组去掉,在递归调用比较去重直到最后,如果有剩下则不返回false;否则true;

代码为

package hao;

import java.util.HashMap;
import java.util.Map;

public class duichenpanduan {

    public static String a = "<>{><}(<<>><>)";
    public static Map<String, String> map = new HashMap<>();

    public static void main(String[] args) {
        map.put("<", ">");
        map.put("{", "}");
        map.put("[", "]");
        map.put("(", ")");
        System.out.println(test(a, a));
    }

    public static boolean test(String a1, String a2) {
        for (int i = 0; i < a1.length() - 1; i++) {
            String c = a1.charAt(i + 1) + "";
            String b = map.get(a1.charAt(i) + "");
            if (c.equals(b)) {
                String a = a1.replaceFirst("\\" + a1.charAt(i) + "\\" + a1.charAt(i + 1), "");
                System.out.println("去对称前=" + a1);
                System.out.println("去对称后=" + a);
                if(a.equals("")){
                    return  true;
                }else if ( !a.equals(a1) || a.length() % 2 != 0) {
                    return test(a, a1);
                } 
            }
        }
        return false;
    }
}

 

String a = "<>{}(<<>><>)";的比较结果

技术分享

String a = "<>{}(<<>><>)";的比较结果

技术分享

可能写的有些麻烦,欢迎指正,有更好的方法欢迎赐教;

 

今天面试问了一道题。说一串字符串由这几个符号组成"<>{}[]()”,写一个算法,例如如果组成方式为“<>{[]}{}()”这种,也就是XML格式那种则返回true。否则返回false;

标签:images   int   turn   回文   har   今天   符号   logs   结果   

原文地址:http://www.cnblogs.com/hao66/p/6973270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!