1. 程式人生 > >今天面試問了一道題。說一串字符串由這幾個符號組成"<>{}[]()”,寫一個算法,例如如果組成方式為“<>{[]}{}()”這種,也就是XML格式那種則返回true。否則返回false;

今天面試問了一道題。說一串字符串由這幾個符號組成"<>{}[]()”,寫一個算法,例如如果組成方式為“<>{[]}{}()”這種,也就是XML格式那種則返回true。否則返回false;

length 分享 void ges 調用 new sta image package

原創

今天面試問了一道題。說一串字符串由這幾個符號組成"<>{}[]()”,寫一個算法,例如如果組成方式為“<>{[]}{}()”這種,也就是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;