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;} } };