如何减少具有相同条件的循环
How to reduce loop with same condition
如何在相同条件下只使用一个循环
谢谢
"<" 是删除字符串中的最后一个字符
答案:检查 2 两个字符串是否相等。
例如。
String[] a = ["a","<","b"]
“一个”
""
“b”
String[] input1 = {"<","<","<","<","b"};
String [] input2 = {"<","a","<","<","b"};
System.out.println(Isequal(input1,input2));
public static boolean Isequal(String[] input1,String[] input2)
{
StringBuilder sb = new StringBuilder();
StringBuilder sb1 = new StringBuilder();
for (String string: input1)
{
if(!string.equals("<"))
{
sb.append(string);
}
else if(string.equals("<") && !sb.isEmpty())
{
sb.deleteCharAt(sb.length() - 1);
}
}
for (String string: input2)
{
if(!string.equals("<"))
{
sb1.append(string);
}
else if(string.equals("<") && !sb1.isEmpty())
{
sb1.deleteCharAt(sb.length() - 1);
}
}
return sb.equals(sb1);
}
如果您的字符串数组大小相同,您可以删除两个 if 语句:
public static boolean Isequal(String[] input1,String[] input2)
{
StringBuilder sb = new StringBuilder();
StringBuilder sb1 = new StringBuilder();
int i=0,j=0;
int m = input1.length;
int n = input2.length;
while(i<m && j<n){
if(!input1[i].contentEquals("<")){
sb.append(input1[i]);
}
else if(input1[i].equals("<") && !(sb.length() ==0))
{
sb.deleteCharAt(sb.length() - 1);
}
if(!input2[j].contentEquals("<")){
sb1.append(input2[j]);
}
else if(input2[j].equals("<") && !(sb1.length() ==0))
{
sb1.deleteCharAt(sb1.length() - 1);
}
i++;
j++;
}
if(i<m){
if(input1[i].contentEquals("<")){
sb.append(input1[i]);
}
else if(input1[i].equals("<") && !(sb.length() ==0))
{
sb1.deleteCharAt(sb.length() - 1);
}
i++;
}
if(j<n){
if(input2[j].contentEquals("<")){
sb1.append(input2[j]);
}
else if(input2[j].equals("<") && !(sb.length() ==0))
{
sb1.deleteCharAt(sb1.length() - 1);
}
}
return sb.toString().equals(sb1.toString());
}
此外,如果您要检查两个字符串字符是否相等,则需要将 strinbuilder 转换为字符串,否则 sb 和 sb1 是两个不同的对象,即使它们具有相同的字符,它们也不相等。
如何在相同条件下只使用一个循环
谢谢
"<" 是删除字符串中的最后一个字符
答案:检查 2 两个字符串是否相等。
例如。 String[] a = ["a","<","b"]
“一个”
""
“b”
String[] input1 = {"<","<","<","<","b"};
String [] input2 = {"<","a","<","<","b"};
System.out.println(Isequal(input1,input2));
public static boolean Isequal(String[] input1,String[] input2)
{
StringBuilder sb = new StringBuilder();
StringBuilder sb1 = new StringBuilder();
for (String string: input1)
{
if(!string.equals("<"))
{
sb.append(string);
}
else if(string.equals("<") && !sb.isEmpty())
{
sb.deleteCharAt(sb.length() - 1);
}
}
for (String string: input2)
{
if(!string.equals("<"))
{
sb1.append(string);
}
else if(string.equals("<") && !sb1.isEmpty())
{
sb1.deleteCharAt(sb.length() - 1);
}
}
return sb.equals(sb1);
}
如果您的字符串数组大小相同,您可以删除两个 if 语句:
public static boolean Isequal(String[] input1,String[] input2)
{
StringBuilder sb = new StringBuilder();
StringBuilder sb1 = new StringBuilder();
int i=0,j=0;
int m = input1.length;
int n = input2.length;
while(i<m && j<n){
if(!input1[i].contentEquals("<")){
sb.append(input1[i]);
}
else if(input1[i].equals("<") && !(sb.length() ==0))
{
sb.deleteCharAt(sb.length() - 1);
}
if(!input2[j].contentEquals("<")){
sb1.append(input2[j]);
}
else if(input2[j].equals("<") && !(sb1.length() ==0))
{
sb1.deleteCharAt(sb1.length() - 1);
}
i++;
j++;
}
if(i<m){
if(input1[i].contentEquals("<")){
sb.append(input1[i]);
}
else if(input1[i].equals("<") && !(sb.length() ==0))
{
sb1.deleteCharAt(sb.length() - 1);
}
i++;
}
if(j<n){
if(input2[j].contentEquals("<")){
sb1.append(input2[j]);
}
else if(input2[j].equals("<") && !(sb.length() ==0))
{
sb1.deleteCharAt(sb1.length() - 1);
}
}
return sb.toString().equals(sb1.toString());
}
此外,如果您要检查两个字符串字符是否相等,则需要将 strinbuilder 转换为字符串,否则 sb 和 sb1 是两个不同的对象,即使它们具有相同的字符,它们也不相等。