北京网站制作公司排名,佛山市企业网站seo联系方式,网站seo查询工具,wordpress意思【小菜鸡刷题记】#xff1a;字符串 剑指 Offer 05. 替换空格剑指 Offer 58 - II.左旋转字符串剑指 Offer 20.表示数值的字符串剑指 Offer 67. 把字符串转换成整数 特此声明#xff1a;题目均来自于力扣 剑指 Offer 05. 替换空格
题目链接 请实现一个函数#xff0c;把字符… 【小菜鸡刷题记】字符串 剑指 Offer 05. 替换空格剑指 Offer 58 - II.左旋转字符串剑指 Offer 20.表示数值的字符串剑指 Offer 67. 把字符串转换成整数 特此声明题目均来自于力扣 剑指 Offer 05. 替换空格
题目链接 请实现一个函数把字符串 s 中的每个空格替换成%20。 示例 1 输入s “We are happy.” 输出“We%20are%20happy.” class Solution {
public:string replaceSpace(string s) {string str;for(int i0;is.size();i){if(s[i] ){str%20;}else{strs[i];}}return str;}
};剑指 Offer 58 - II.左旋转字符串
剑指 Offer 58 - II. 左旋转字符串 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如输入字符串abcdefg和数字2该函数将返回左旋转两位得到的结果cdefgab。 示例 1 输入: s “abcdefg”, k 2 输出: “cdefgab” //三步翻转法
class Solution {
public:string reverseLeftWords(string s, int n) {int kn%s.size();//反转前半段reverse(s.begin(),s.begin()k);//反转后半段reverse(s.begin()k,s.end());//整体反转reverse(s.begin(),s.end());return s;}
};//字符串拼接法
class Solution {
public:string reverseLeftWords(string s, int n) {return s.substr(n)s.substr(0,n);}
};剑指 Offer 20.表示数值的字符串
剑指 Offer 20. 表示数值的字符串 解题思路数值可以表示为A [ . [ B ] ] [ E | e C ]或者.B [ e | E C ] 其中A是这个数值的整数部分B是小数点后及e之前的小数部分C是e的指数部分 整数部分不是必须的 以数值字符串123.45e6为例123为整数部分A45为小数部分B6为指数部分C class Solution {
public://匹配正负号bool isInteger(string s){if(s[0]||s[0]-)s.erase(0,1);return Isdigit(s); }//判断是否出现数字bool Isdigit(string s){int i0;while(s[i]!\0isdigit(s[i])){i;}ss.substr(i);return i0;}void EraseSpace(string s){//去除首尾空格int i 0;while (i s.size() s[i] )i;s s.substr(i);while (s.back() )s.pop_back();}bool isNumber(string s) {if(s) return false;EraseSpace(s);//判断是否出现‘’‘-’数字并原地修改字符串bool IntegerisInteger(s);//如果出现.证明到了小数部分if(s[0].){s.erase(0,1);// ||的原因// 19. 等于9.0// 29.9 正常数值// 3.9 等于0.9IntegerIsdigit(s)||Integer;}//如果出现‘e’E,指数部分if(s[0]e||s[0]E){s.erase(0,1);//用的原因// 1.e前面没有整数.e6、e6不能表示数字// 2.e的后面没有整数 6e、6e3不能表示数字IntegerIntegerisInteger(s);}//特殊情况如果e后面有小数点会在s\0这一步判断失败return Integer s\0;}
};剑指 Offer 67. 把字符串转换成整数
剑指 Offer 67. 把字符串转换成整数
写一个函数 StrToInt实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 考虑特殊输入如字符串是一个、\0 0 0 -0 我定义了一个枚举类型以及一个全局变量用来分辨是否是合法输入
enum{IsUnlawful0,IsLawful};//判断是否是非法输入
static int g_stateIslawful;
class Solution {
public:int strToInt(string str) {int g_stateIsUnlawful;//非法输入long long num0;int i0;if(str ! str!\0){bool flagtrue;//正数while(str[i] )//去空格{i;}if(str[i])//判断符号{i;}else if(str[i]-){i;flagfalse;}if(str[i]!\0)//-\0;{numDigitToStr(str,i,flag);//转换}}//coutg_stateendl;这里进用来测试是非法输入还是合法输入return static_castint(num);}long long DigitToStr(string s,int i,bool flag){long long num0;while(s[i]!\0){if(isdigit(s[i])){int retflagtrue? 1:-1; num10*num(s[i]-0)*ret;//判断是否越界if(numINT_MAXflag){return INT_MAX;}if(numINT_MIN!flag){return INT_MIN;}}if(!isdigit(s[i]))//异常结束我这里把 4193 with words、words and 987看成一种情况{break;}i;if(s[i]\0)//正常结束{//设置为合法输入g_stateIsLawful;}}return num;}
};