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

原创

今天面试问了一道题。说一串字符串由这几个符号组成"<>{}[]()”,写一个算法,例如如果组成方式为“<>{[]}{}()”这种,也就是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 = "<>{}(<<>><>)";的比较结果

可能写的有些麻烦,欢迎指正,有更好的方法欢迎赐教;
				
时间: 2024-10-10 09:00:29

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

return 符文条件返回true 不符合返回false

&lt;!-- str.startsWith(&#39;胡&#39;) 检查一个 字符串中是否有某字符 返回true false --&gt;

1.<!-- str.startsWith('胡')  检查一个 字符串中是否有某字符 返回true false --> 2. vh 分享到选择其它项 复制本页链接 版本:CSS3 补充完善,提交问题欢迎微博上 @愚人码头 说明: 相对于视口的高度.视口被均分为100单位的vh 示例代码: h1 { font-size: 8vh; } 如果视口的高度是200mm,那么上述代码中h1元素的字号将为16mm,即(8x200)/100 兼容性: 浅绿 = 支持 红色 = 不支持 粉色 = 部分支持

判断是否含有中文,包含返回true,不包含返回false

/** * 功能:判断是否含有中文,包含返回true,不包含返回false */ function isChina(s) { var patrn = /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi; if (!patrn.exec(s)) { return false; } else { return true; } }

Python 字典(Dictionary) has_key()方法-判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false

描述 Python 字典(Dictionary) has_key() 函数用于判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false. 语法 has_key()方法语法: dict.has_key(key) 参数 key -- 要在字典中查找的键. 返回值 如果键在字典里返回true,否则返回false. 实例 以下实例展示了 has_key()函数的使用方法: #!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7} pri

为什么在 Java 中128==128返回false,而127==127返回true呢?

为什么在 Java 中128==128返回false,而127==127返回true呢? 有这样一段代码 Integer a=127; Integer b=127; System.out.println(a==b); Integer c=128; Integer d=128; System.out.println(c==d); 运行结果为: true false 究竟是为什么呢? 如果两个引用指向相同的对象,它们在 == 表达式中是相等的:如果两个引用指向不同的对象,尽管它们拥有相同的内容即值,

js中return;、return true、return false;区别

一.返回控制与函数结果, 语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果  二.返回控制, 无函数结果,语法为:return;  在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页.    Return False 就相当于终止符,Return True 就相当于执行符.    在js中return false的作用一般是用来取消默认动作的.比如你单击一

js中return、return true、return false的区别

js中return.return true.return false;区别 一.返回控制与函数结果, 语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果  二.返回控制, 无函数结果,语法为:return;  在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页.    Return False 就相当于终止符,Return True 就相当于执行符.    

[ jquery 过滤器 is(expr | jqObj | ele | function) ] 此方法用于在选择器的基础之上根据选择器、DOM元素或 jQuery 对象来检测匹配元素集合,如果有,则返回true

根据选择器.DOM元素或 jQuery 对象来检测匹配元素集合,如果其中至少有一个元素符合这个给定的表达式就返回true. 如果没有元素符合,或者表达式无效,都返回'false'. '''注意:'''在jQuery 1.3中才对所有表达式提供了支持.在先前版本中,如果提供了复杂的表达式,比如层级选择器(比如 + , ~ 和 > ),始终会返回true 实例: <!DOCTYPE html> <html lang='zh-cn'> <head> <title&

写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;

写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true:也就是实现这样一个函数boolean isPalindrome(int x); 分析一下,该题目主要是通过移位来实现,二进制模式从正向看和反向看是一样的,说明这个二进制数两边是对称的, 画个图看看: 代码如下: boolean isPalindrome(int x){ int flag = 1,i,j,temp;    while(1){        if(num&(0x1<<flag)){