了解算法解决方案

Understanding an algorithm solution

本文关键字:解决方案 算法 了解      更新时间:2023-10-16

我想自己解决这里的问题:在C++中找到左右相等的最长子字符串

代码在这里

int getEqualSumSubstring(string s) {
    int i=0,j=i,foundLength=0;
    for(i=0;i<s.length();i++)
    {
        for(j=i;j<s.length();j++)
        {
            int temp = j-i+1;
            if(temp%2==0)
            {
                int leftSum=0,rightSum=0;
                string tempString=s.substr(i,temp);
                // printf("%d ",tempString.length());
                for(int k=0;k<temp/2;k++)
                {
                    leftSum=leftSum+tempString[k]-48;
                    rightSum=rightSum+tempString[k+(temp/2)]-48;
                }
                if((leftSum==rightSum)&&(leftSum!=0))
                    if(tempString.length()>foundLength)
                    foundLength=tempString.length(); 
            }
        }
    }
    return(foundLength);
}

我想知道 temp = i+j-1 的计算是如何完成的?他如何在纸上或通过示例得到这个方程。我尝试了很多,但我无法得到它。

它只是子字符串的长度,其中 i 和 j 分别是子字符串的左边界和右边界。如果我们在从x到y,x