8.2 字符串中等(阅读难度) 165 Compare Version Numbers 299 Bulls and Cows
创始人
2024-11-13 14:37:32
0

今天两道题难点都在读懂题目要求,思路并不难

165 Compare Version Numbers

class Solution { public:     vector> getVersion(string s){         vector> v;         vector current;         for(char ch : s){             //忽略前导零             if(ch == '0' && current.empty()){                 continue;             }             //记录数值             if(ch != '.'){                current.push_back(ch-'0');             }else{                 v.push_back(current);                 current.clear();              }         }         v.push_back(current);         return v;     }     int vectorToInt(vector num){         int res = 0;         int n = num.size();         if(n == 0){             return 0;         }         for(int i = 0 ; i < n ; i++){             res = res * 10 + num[i];         }         return res;     }     int compareVersion(string version1, string version2) {         /* 读题         //比较版本号-->修订号转为int 并忽略前导零         //从左到右一个个比较,忽略前导零         //如果v1v2 1 否则0*/          //主体遍历:单项思维:遇到.就比较后面的值转为int题目中都告诉了是肯定可以被int承载的         vector> v1 , v2;         v1 = getVersion(version1);         v2 = getVersion(version2);         //获取修订号:忽略前导零 且 拆分版本号         //遍历对应的v1[0] v2[0]要获取这俩的整数         int n1 = v1.size(), n2 = v2.size();         int n = max(n1, n2);         for(int i = 0 ; i < n;i++){             int num1 = i < n1 ? vectorToInt(v1[i]) : 0;             int num2 = i < n2 ? vectorToInt(v2[i]) : 0;              if(num1 > num2) return 1;             if(num1 < num2) return -1;         }         return 0;              } }; 

c++代码学习

1. 二维数组的输入 vector> v; vector current; 先填满current 在v.push_back(current); current.clear();然后重复这个过程  2. 将数组中的数字组合为一个整数 pow会导致浮点数计算,尽量避免: for(int i = 0 ; i < n ; i++){       res = res * 10 + num[i]; }		  

299 Bulls and Cows

在这里插入图片描述

class Solution { public:     string getHint(string secret, string guess) {     	/* 读题         //玩bulls & cows这个游戏         //我写一个数字 让我朋友猜         //猜了以后:bulls代表在正确位置且数字也对了A cows不在正确位置但是数字对了 B         //返回形式 "xAyB"x和y都有可能是三位数 不是个位数 */                  string res = "";         int n = secret.size() , bulls =0 ,cows=0;         //判断bull公牛数          for(int i = 0 ; i < n ; i ++){             if(secret[i] == guess[i]){                 bulls++;                 secret[i] = 'b';                 guess[i] = 'b';             }         }         //难点1:cows奶牛数的判别 数字对了但是位置不对,那就是说有多少个不重复的相同数字n^2         for(int i = 0 ; i < n ; i++){             char ch1 = secret[i];             if(!isdigit(ch1))continue;             for(int j = 0 ; j < n ; j++){                 char ch2 = guess[j];                 if(!isdigit(ch2))continue;                 if(ch1 == ch2){                     cows++;                     guess[j] = 'c';                     break;                 }             }         }         //难点2:多位数字转字符 to_string         res.append(to_string(bulls));         res += 'A';         res.append(to_string(cows));         res += 'B';         return res;     } }; 

时间复杂度为 O ( n 2 ) O(n^2) O(n2),官方题解中有为 O ( n ) O(n) O(n)的算法。这个是类似于之前建立26字母表计数的方法。【review 7.26 242 Valid Anagram几乎一模一样】思路练习:387 First Unique Character in a String 389 Find the Difference

class Solution { public:     string getHint(string secret, string guess) {         int n = secret.size();         int bulls = 0 , cows = 0;         vector secretCount(10 , 0) , guessCount(10 , 0);         for(int i = 0 ; i < n ; i ++){             if(secret[i] == guess[i]){                 bulls++;             }             else{                 secretCount[secret[i] - '0']++;                 guessCount[guess[i] - '0']++;             }         }          //计算奶牛数         for(int i = 0 ; i <10 ; i++){             cows += min(secretCount[i] , guessCount[i]);         }          return to_string(bulls)+'A'+to_string(cows)+'B';     } }; 

字符串题中 寻找两字符串中相同字符数目,且不要求位置一致时,转换思路为计算整个字符串中不同字符的数目,取两个字符串中计数较小的值即为ans。

相关内容

热门资讯

总结辅助!购买的wpk辅助在哪... 总结辅助!购买的wpk辅助在哪里下载,德普之星辅助软件,解密教程(存在有挂)购买的wpk辅助在哪里下...
教程攻略!聚财平台辅助,小闲川... 教程攻略!聚财平台辅助,小闲川南宜宾辅助,办法教程(有挂工具)1、全新机制【小闲川南宜宾辅助ai辅助...
玩家亲测!poker worl... 玩家亲测!poker world辅助器,雀友会广东潮汕麻雀,攻略教程(有挂教学)1、全新机制【雀友会...
法门辅助!wpk控制牌是真的吗... 法门辅助!wpk控制牌是真的吗,hhpoker怎么破解,解迷教程(有挂讲解)1、起透看视 wpk控制...
查到实测辅助!情怀莆仙外挂,湖... 查到实测辅助!情怀莆仙外挂,湖北逍遥卡五星辅助,绝活儿教程(果真有挂)1、全新机制【湖北逍遥卡五星辅...
据统计!wepoker怎么设置... 据统计!wepoker怎么设置房间,hhpoker大菠萝有没有作比,模板教程(有挂技巧)1、全新机制...
模板辅助!wepoker透视a... 模板辅助!wepoker透视app下载,wepoker俱乐部辅助,曝光教程(发现有挂)1、下载好we...
教程辅助!乐乐围棋入门辅助,爱... 教程辅助!乐乐围棋入门辅助,爱来大菠萝挂,教材教程(有挂分析)1、不需要AI权限,帮助你快速的进行乐...
技术分享!werplan免费挂... 技术分享!werplan免费挂下载,天酷游戏交易平台,手筋教程(有挂方法)1、下载好天酷游戏交易平台...
法门辅助!wepoker开脚本... 法门辅助!wepoker开脚本视频,aapoker透视脚本下载,了解教程(有挂教学)aapoker透...