为啥只通过50%

#include <iostream>
#include <vector>
#include <string>
using namespace std;

class solution{
public:
    int func(string str){
        vector<int> vec(str.size());
        for(int i=0;i<str.size();++i){
            if(str[i]>='1' && str[i]<='9'){
                int val = str[i]-'0';
                int left = i-1;
                int right = i+1;
                while(left>=0 && val>=0){
                    if(str[left]=='X')
                        vec[left] = 1;
                    left--;
                    val--;
                }
                val = str[i]-'0';
                while(right<=str.size()-1 && val>=0){
                    if(str[right]=='X')
                        vec[right] = 1;
                    right++;
                    val--;
                }

            }
        }
        int sum = 0;
        for(int i=0;i<str.size();++i){
            if(vec[i]==1)
                sum++;
        }
        return sum;
    }
};

int main()
{
    int N;
    cin >> N;
    string str;
    cin >> str;
    solution s;
    cout << s.func(str);
    return 0;
}