gpt4 book ai didi

java - 根据某些条件将括号和星号插入字符串

转载 作者:行者123 更新时间:2023-11-29 08:57:00 24 4
gpt4 key购买 nike

我有以下方法,用于在处理乘法时将括号和星号插入 boolean 表达式。例如,输入 A+B+AB 将得到 A+B+(A*B)

但是,我还需要考虑素数(撇号)。以下是输入/输出的一些示例:

A'B'+CD 应该给出 (A'*B')+(C*D)

A'B'C'D' 应该给出 (A'*B'*C'*D')

(A+B)'+(C'D') 应该给出 (A+B)'+(C'*D')

我试过下面的代码,但似乎有错误。有什么想法吗?

public static String modify(String expression)
{
String temp = expression;
StringBuilder validated = new StringBuilder();
boolean inBrackets=false;

for(int idx=0; idx<temp.length()-1; idx++)
{
//no prime
if((Character.isLetter(temp.charAt(idx))) && (Character.isLetter(temp.charAt(idx+1))))
{
if(!inBrackets)
{
inBrackets = true;
validated.append("(");
}
validated.append(temp.substring(idx,idx+1));
validated.append("*");
}

//first prime
else if((Character.isLetter(temp.charAt(idx))) && (temp.charAt(idx+1)=='\'') && (Character.isLetter(temp.charAt(idx+2))))
{
if(!inBrackets)
{
inBrackets = true;
validated.append("(");
}
validated.append(temp.substring(idx,idx+2));
validated.append("*");
idx++;
}

//second prime
else if((Character.isLetter(temp.charAt(idx))) && (temp.charAt(idx+2)=='\'') && (Character.isLetter(temp.charAt(idx+1))))
{
if(!inBrackets)
{
inBrackets = true;
validated.append("(");
}
validated.append(temp.substring(idx,idx+1));
validated.append("*");
idx++;
}

else
{
validated.append(temp.substring(idx,idx+1));
if(inBrackets)
{
validated.append(")");
inBrackets=false;
}
}
}
validated.append(temp.substring(temp.length()-1));
if(inBrackets)
{
validated.append(")");
inBrackets=false;
}
return validated.toString();
}

非常感谢您的帮助。先感谢您! :)

最佳答案

我建议您应该从字符串中 + 字符的位置开始。如果它们相差 1,则您什么都不做。如果它们相差 2,则有两种可能性:ABA'。所以你检查一下。如果它们相差超过 2,则只需检查 ' 符号并输入所需的符号。

关于java - 根据某些条件将括号和星号插入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19827393/

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