当前位置: 首页 > news >正文

网站建设到运营赚钱南宁网页设计招聘

网站建设到运营赚钱,南宁网页设计招聘,上海网站设计,上海工业设计公司排名前十强【C/C】涉及string类的经典OJ编程题 一. 把字符串转化成整数(atoi)解法一:(不用long)完整代码:解法二:(用long) 二.字符串相加代码实现(含注释)&a…

【C/C++】涉及string类的经典OJ编程题

  • 一. 把字符串转化成整数(atoi)
    • 解法一:(不用long)
    • 完整代码:
    • 解法二:(用long)
  • 二.字符串相加
    • 代码实现(含注释):
  • 三.反转字符串
    • 代码实现:
  • 四.字符串中的第一个唯一字符
    • 解法一:
    • 解法二:(推荐)

一. 把字符串转化成整数(atoi)

点这里:本题LeetCode链接
该题源代码声明:
作者:Krahets
链接:https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof/solutions/201301/mian-shi-ti-67-ba-zi-fu-chuan-zhuan-huan-cheng-z-4/
来源:力扣(LeetCode)

在这里插入图片描述

解法一:(不用long)

首先来看该题要用到的所以的变量的定义和初始化

  int res = 0, bndry = INT_MAX / 10;int i = 0, sign = 1, length = str.size();

第一步:

  1. 判断字符串是否为空字符串
  2. 读取字符串并丢弃无用的前导空歌并且判断该字符串是否为全为空格的字符串。通过对下标 i 的控制来实现。
    代码实现:
 if(length == 0) return 0;while(str[i] == ' ')if(++i == length) return 0;//若不是空字符串,i走到符号位

第二步:
判断字符的正负
代码实现:

if(str[i] == '-') sign = -1;
if(str[i] == '-' || str[i] == '+') i++;//让i走到符号位后的第一个数字字符

第三步:(关键)
(最大最小数值)边界的处理
一旦遇到非数字字符直接返回0;此时的 j 为第一个数字字符。
变量的定义和初始化:int res = 0, bndry = INT_MAX / 10; (INT_MAX )等于2147483647,注意这里的个位数字7;注意初始化的bndry = 214748364;
再看这句代码:res = res * 10 + (str[j] - ‘0’);通过这句代码可以将字符数字转发为对应大小的整形数值。现在就可以理解 if 语句里面的条件判断:

  1. 当res一旦大于bndry = 214748364;往下走完语句res = res * 10 + (str[j] - ‘0’);时,res就会越界;
  2. 当(res == bndry && str[j] > ‘7’),此时下标 j 指向的字符大于7时,往下走完语句res = res * 10 + (str[j] - ‘0’);时,res也会越界;

代码实现:

 for(int j = i; j < length; j++) {if(str[j] < '0' || str[j] > '9') break;if(res > bndry || res == bndry && str[j] > '7')return sign == 1 ? INT_MAX : INT_MIN;res = res * 10 + (str[j] - '0');}

完整代码:

class Solution {
public:int myAtoi(string str) {int res = 0, bndry = INT_MAX / 10;int i = 0, sign = 1, length = str.size();if(length == 0) return 0;while(str[i] == ' ')if(++i == length) return 0;if(str[i] == '-') sign = -1;if(str[i] == '-' || str[i] == '+') i++;for(int j = i; j < length; j++) {if(str[j] < '0' || str[j] > '9') break;if(res > bndry || res == bndry && str[j] > '7')return sign == 1 ? INT_MAX : INT_MIN;res = res * 10 + (str[j] - '0');}return sign * res;}
};

解法二:(用long)

用long的前提:(操作系统)环境能存储 64 位大小的有符号整数

class Solution {
public:int myAtoi(string str) {long int res = 0, bndry = INT_MAX / 10;int i = 0, sign = 1, length = str.size();if(length == 0) return 0;while(str[i] == ' '){i++;if(i == length)return 0;}if(str[i] == '-')sign = -1;if(str[i] == '-' || str[i] == '+') i++;for(int j = i; j < length; j++){if(str[j] > '9' || str[j] < '0')return sign * res;res = res * 10 + str[j] - '0';//如果不用long,这句代码可能会造成res溢出int max;无法通过部分测试if(res > INT_MAX)return sign == 1 ? INT_MAX : INT_MIN;}return sign * res;}
};

二.字符串相加

点这里:本题LeetCode链接
在这里插入图片描述

代码实现(含注释):

class Solution {
public:string addStrings(string num1, string num2) {string tmp;int count = 0;//用于进位int gap1 = num1.end() - num1.begin() - 1;//字符串1尾下标int gap2 = num2.end() - num2.begin() - 1;//字符串2尾下标while(gap1 >= 0 || gap2 >= 0){int x = gap1 >= 0 ? num1[gap1] - '0' : 0;//将数字字符串转换为对应整形数字int y = gap2 >= 0 ? num2[gap2] - '0' : 0;//当下标走到负数将其转换为0int sum = x + y + count;//对应两两相加,在加上进位数值count = sum / 10;//得进位数值sum %= 10;//得个位数值tmp += (sum + '0');//依次拼接(逆序)gap1--;gap2--;}if(count == 1)//解决一个字符串为“0”,另一个为“9”,还有最高位未进位的情况{tmp += '1';}reverse(tmp.begin(), tmp.end());//颠倒为顺序return tmp;}
};

三.反转字符串

点这里:本题LeetCode链接
在这里插入图片描述

代码实现:

class Solution {
public:void reverseString(vector<char>& s) {int begin = 0;int end = s.size() - 1;while(begin < end){swap(s[begin], s[end]);begin++;end--;}}
};

四.字符串中的第一个唯一字符

点这里:本题LeetCode链接
在这里插入图片描述

解法一:

原理:两两比较字符串中的所以字符,通过计数来判断是否有相同字符

class Solution {
public:int firstUniqChar(string s) {for(int i = 0; i < s.size(); i++){int count = 0;int j = 0;for(; j < s.size(); j++){if(s[i] == s[j] && i != j)break;if(s[i] != s[j])count++;}if(count == s.size() - 1)return i;}return -1;}
};

解法二:(推荐)

原理:如果从左往右找,和从右往左找同一个字符,返回它们的下标相同,则在给出的字符串中该字符有且只有这一个
s.find(s[i]) : 返回字符串s中从左向右查找s[i]第一次出现的位置;
s.rfind(s[i]) : 返回字符串s中从右向左查找s[i]第一次出现的位置;
解法二声明:
作者:WTY2002
链接:https://leetcode.cn/problems/first-unique-character-in-a-string/solutions/948758/qiao-yong-stringrong-qi-de-cha-zhao-han-y1507/
来源:力扣(LeetCode)


class Solution {
public:int firstUniqChar(string s) {for(int i = 0; i < s.size() ; i++){if(s.find(s[i]) == s.rfind(s[i])){return i;}}return -1;}
};
http://www.yayakq.cn/news/523576/

相关文章:

  • 工程行业做的好的网站有哪些内容下载做ppt的动画片的好网站
  • 网站备案查询 工信部重庆seo排名软件
  • 谷歌英文网站优化网站开发项目swot分析
  • wordpress iis建站网站建设需要敲代码吗
  • 网站建设策划书提纲用织梦怎么修改网站首页商品顺序
  • 浙江温州城乡建设网站昆山企业网站设计
  • 知名广州网站建设教育网站案例
  • 网站建站行业服装技术支持东莞网站建设
  • 济南做设计公司网站作文网站网址大全
  • 怎么自己做歌曲网站威海那家做网站好
  • 公司网站放哪些内容可以用tomcat.做网站吗
  • 成都神速建站如何在亚马逊上开网店
  • 基层建设是哪个网站的wordpress网站加密方式
  • 企业网站管理系统 cms网站推广软件预期效果
  • 中国制造网注册网站免费注册彩票网站定制
  • 一家只做卫生巾的网站深圳市专业网站建设
  • 做网站的人叫什么宁波seo关键词如何优化
  • 营销网站搭建建议如何注销公司流程及费用
  • word超链接网站怎样做网站建设软硬件平台
  • 网站需求分析网站建设河南华盛建设集团网站
  • 单招网是哪个网站制作公司做的动漫网站建设的目标
  • 设计参考网站有哪些wordpress博客联盟
  • 厦门外贸建站网站开发女生适合吗
  • 沈阳酒店企业网站制作公司网页设计职位
  • 石家庄网站建设企业在线图片制作加字生成
  • 怎么搭建本地网站百度云网站建设教程
  • 广州市网站建设 乾图信息科技机械英文网站
  • 山东天齐建设集团网站负面口碑营销案例
  • 域名服务网站WordPress任务悬赏 插件
  • 四川省住房和城乡建设局网站首页网站结构分析