秋招-算法题

1、将字符串中的数字打上括号

 1 //法一:
 2 bool isNumber(const char& c)
 3 {
 4     if(c >= '0' && c <= '9')
 5         return true;
 6     return false;
 7 }
 8 int main()
 9 {
10     std::string inStr = "b";
11     std::string outStr = "";
12     bool flag = false;  //我还没有插
13     for (const char& c : inStr)
14     {
15         if(isNumber(c))
16         {
17             if(flag == false)
18             {
19                 outStr += '(';
20                 flag = true;
21             }
22         }
23         else
24         {
25             if(flag == true)
26             {
27                 outStr += ')';
28                 flag = false;
29             }
30         }
31         outStr += c;
32     }
33     if(flag)
34         outStr += ')';
35     std::cout << outStr << std::endl;
36 }
37 //法二:双指针
38 std::string addBrackets(std::string s)
39 {
40     std::string res;
41     int left = 0;
42     for(int right = 0; right < s.size(); right++)
43     {
44         if(!isdigit(s[right])) res += s[right];
45         else {
46             res += '(';
47             left = right;
48             while(right < s.size() && isdigit(s[right])) right++;
49             res += s.substr(left, right - left);
50             res += ')';
51             right--;    //这得自减
52         }
53     }
54     return res;
55 }

 2、rand35实现rand47

class Solution {
public:
    int rand47() {
        while(true)
        {
            int x = (rand35()-1)*35 + rand35();//rand生成0-1225
            if (x <= 47*26) //拒绝1223-1225
            {return x % 47 + 1;}
        
    }
};

  

原文地址:https://www.cnblogs.com/zyj23/p/15400700.html