gpt4 book ai didi

java - 将中缀字符串拆分为 java 中的字符串数组

转载 作者:行者123 更新时间:2023-12-03 23:02:00 24 4
gpt4 key购买 nike

我正在研究一个迷你科学计算器,它可以使用 infixpostfix 算法。我的输入是一个中缀字符串 .. 而我的 infixpostfix 的转换逻辑需要 arraystring。那么我如何拆分这样的中缀字符串:

 100+(0.03*55)/45-(25+55)

到一个字符串数组,其中每个操作数和运算符都是一个数组元素。像这样

 "100" , "+" , "(" , "0.03" , "*" , "55" , ")" , "/" , "45" , "-"

等等……

注意字符串中没有空格所以不能根据正则表达式""分割。

最佳答案

显然每个字符都是一个分开的标记,除了可能带有点的连续数字。因此,一个简单的解决方案是遍历字符串,然后当您看到一个数字前面有另一个数字(或小数点分隔符,一个点)时,将该字符添加到前一个标记中,否则将其添加到新标记中.

这里是代码:

public static List<String> getTokens(String inputString) {
List<String> tokens = new ArrayList<String>();
// Add the first character to a new token. We make the assumption
// that the string is not empty.
tokens.add(Character.toString(inputString.charAt(0)));

// Now iterate over the rest of the characters from the input string.
for (int i = 1; i < inputString.length(); i++) {
char ch = inputString.charAt(i); // Store the current character.
char lch = inputString.charAt(i - 1); // Store the last character.

// We're checking if the last character is either a digit or the
// dot, AND if the current character is either a digit or a dot.
if ((Character.isDigit(ch) || ch == '.') && (Character.isDigit(lch) || lch == '.')) {
// If so, add the current character to the last token.
int lastIndex = (tokens.size() - 1);
tokens.set(lastIndex, tokens.get(lastIndex) + ch);
}
else {
// Otherwise, add the current character to a new token.
tokens.add(Character.toString(ch));
}
}
return tokens;
}

请注意,此方法比大多数正则表达式方法更快

关于java - 将中缀字符串拆分为 java 中的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35042087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com