使用Stack和HashMap的格式正确的字符串

约翰

格式正确和格式不正确的字符串的示例是:

1.  “A3{DJE(DG[FF]K)WA65}”      - well formed
2.  “BBB[BM98{WJHG]333}”    - Not well formed
3.  “CBY(DDD(WKLP)BEHOP”    - Not well formed

支持的括号为{},[]和()

这是我正在尝试做的事情,由于某种原因,它总是返回false。

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

public class WellFormedStringCheck {



    public static boolean isWellFormed(String input){

        if(input == null) return true;

        Stack<Character> stack = new Stack<>();

        Map<Character,Character> map = new HashMap<Character,Character>();

        map.put('{', '}');
        map.put('(', ')');
        map.put('[', ']');



        for(int i = 0 ; i < input.length(); i++){

                char s = input.charAt(i);

                if(s == '[' || s == '{' || s == '(' )
                    stack.push(s);
                if(s == ']' || s == '}' || s == ')'){

                    if(stack.isEmpty()) return false;

                    if(map.get(s) != stack.pop()); return false;


                }

            }

        if(!stack.isEmpty()) return false;

         return true;


    }

    public static void main(String[] args) {

      System.out.println(isWellFormed("A3{DJE(DG[FF]K)WA65}"));

    }

}

有人可以告诉我上述方法有什么问题吗?

蒂姆·比格莱森(Tim Biegeleisen)

你犯了一个愚蠢的错误,而你建立你的参考地图括号,括号,括号和倒退这是您最初构建地图的方式:

map.put('{', '}');
map.put('(', ')');
map.put('[', ']');

但你仰视关闭括号,括号,括号和在地图中,当钥匙实际上不是开放字符。这正在返回null并使您的方法返回false

这是您的方法的完整代码:

public static boolean isWellFormed(String input) {
    if (input == null) return true;

    Stack<Character> stack = new Stack<Character>();
    Map<Character,Character> map = new HashMap<Character,Character>();

    map.put('}', '{');
    map.put(')', '(');
    map.put(']', '[');

    for (int i=0; i < input.length(); i++) {
        char s = input.charAt(i);

        if (s == '[' || s == '{' || s == '(') {
            stack.push(s);
        }
        if (s == ']' || s == '}' || s == ')') {
            if (map.get(s) != stack.pop()) {
                return false;
            }
        }
    }

    if (!stack.isEmpty()) {
        return false;
    }
    else {
        return true;
    }
}

我用IntelliJ中的此更改测试了您的代码,它似乎没有任何问题地运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Stack和HashMap的格式正确的字符串

来自分类Dev

字符串格式正确使用

来自分类Dev

解析使用HashMap的格式化字符串

来自分类Dev

在Zend的串联中使用字符串的正确格式

来自分类Dev

如何确保字符串格式正确

来自分类Dev

字符串格式不正确

来自分类Dev

如何确保字符串格式正确

来自分类Dev

字符串格式不正确

来自分类Dev

如何使用 morphia 映射字符串的 HashMap 和字符串的 ArrayList

来自分类Dev

使用UWP和x:Bind的字符串格式

来自分类Dev

使用Python子进程和字符串格式

来自分类Dev

使用cout和字符串格式化列

来自分类Dev

使用类型和格式字符串将字符串转换为对象

来自分类Dev

熊猫 - 如何正确排序周和年份数字格式化为字符串?

来自分类Dev

获取正确的sscanf格式以打印字符串和整数

来自分类Dev

如何正确对齐和格式化不同的字符串长度

来自分类Dev

字符串和格式的转换

来自分类Dev

使用HashMap比较字符串

来自分类Dev

使用HashMAP到ArrayList的字符串

来自分类Dev

使用HashMap比较字符串

来自分类Dev

格式化字符串-输入的字符串格式不正确

来自分类Dev

使用int键时输入字符串的格式不正确

来自分类Dev

如何使用OpenFileDialog将文件路径正确格式化为字符串?

来自分类Dev

输入字符串的格式不正确-使用了错误的上下文

来自分类Dev

如何正确格式化此字符串以在URL中使用

来自分类Dev

如何使用highchart将PHP格式化为饼图中的JSON正确字符串

来自分类Dev

使用双精度十进制数时输入字符串格式不正确

来自分类Dev

如何使用OpenFileDialog将文件路径正确格式化为字符串?

来自分类Dev

使用套接字时输入字符串的格式不正确

Related 相关文章

热门标签

归档