如何减少具有相同条件的循环

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 是两个不同的对象,即使它们具有相同的字符,它们也不相等。