[LeetCode Daily Question] 1625. The smallest lexicographical string after performing an operation (medium)

1625. The lexicographically smallest string after performing an operation


BFS enumeration

The topic is concise and concise, and the amount of data is not large. Let's search with BFS.

class Solution {
    
    
public:
    string findLexSmallestString(string s, int a, int b) {
    
    
        queue<string> q;
        int n=s.length();
        string res=s;
        q.push(s);
        unordered_set<string> vis;
        vis.insert(s);
        while(!q.empty()){
    
    
            string ss=q.front();
            q.pop();
            res=min(res,ss);
            //累加
            string s1=ss;
            for(int i=1;i<n;i+=2){
    
    
                s1[i]=(s1[i]-'0'+a)%10+'0';
            }
            if(!vis.count(s1)){
    
    
                vis.insert(s1);
                q.push(s1);
            }
            //轮转
            string s2=ss;
            s2=ss.substr(n-b)+ss.substr(0,n-b);
            if(!vis.count(s2)){
    
    
                vis.insert(s2);
                q.push(s2);
            }
        }
        return res;
    }
};

Guess you like

Origin blog.csdn.net/qq_44623371/article/details/129650483