上海网站建设上海网站制作,网站设计公司深,三点水网站建设合同书,高校网站建设 安全教育编程题#xff1a;
题一#xff1a;把字符串转换成整数
把字符串转换成整数_牛客题霸_牛客网 示例1 输入#xff1a; 2147483647 返回值#xff1a; 2147483647思路一#xff1a;
第一步#xff1a;it从str的第一个字符开始遍历#xff0c;定义一个最后输…
编程题
题一把字符串转换成整数
把字符串转换成整数_牛客题霸_牛客网 示例1 输入 2147483647 返回值 2147483647思路一
第一步it从str的第一个字符开始遍历定义一个最后输出的值你以及判断结果正负的flag
第二步第一个为正则忽略为负将flag改为负值
第三步遍历字符串遇到非字母直接退出否则记录下来
第四步最后得到的值n乘以判断正负的flag就是结果。
class Solution {
public:int StrToInt(string str) {//it从str的第一个字符开始遍历string::iterator it str.begin();int n 0;//由flag来决定结果的正负int flag 1;//第一个为正则忽略为负将flag改为负值if(*it ){it 1;}if(*it -){flag -1;it 1;}//遍历字符串遇到非字母直接退出否则记录下来while(it ! str.end()){if(*it 48 || *it 57){return 0;}else{n * 10;n *it - 48;}it;}return n * flag;}
}; 题二反转字符串
344. 反转字符串 - 力扣LeetCode 示例 1 输入s [h,e,l,l,o]
输出[o,l,l,e,h] 思路一 没有啥好说的直接从第一个字符开始与最后一个字符一起替换
class Solution {
public:void reverseString(vectorchar s) {int left 0;int right s.size() - 1;//从第一个字符开始位置替换while(left right){swap(s[left],s[right]);left;--right;}}
};
思路二 直接用string类里的逆置接口reverse也可以直接完成反转
class Solution {
public:void reverseString(vectorchar s) {reverse(s.begin(),s.end());}
};
题三字符串中的第一个唯一字符
387. 字符串中的第一个唯一字符 - 力扣LeetCode 思路一
第一步定义一个记录字母的数组
第二步从下标为0开始遍历记录字母对应数组下标的个数
第三步再次遍历字符串将在数组中只出现一次的的字母对应字符串的下标返回
第四步如果第三步中遍历完以后没有找到只出现一次的字母返回-1.
class Solution {
public:int firstUniqChar(string s) {//定义一个记录字母的数组int arr[26] {0};int it1 0;//从下标为0开始遍历记录字母对应数组下标的个数while(it1 s.size()){arr[s[it1] - a] 1;it1;}int it2 0;//再次遍历字符串将在数组中只出现一次的的字母对应字符串的下标返回while(it2 s.size()){if(arr[s[it2] - a] 1){return it2;}it2;}return -1;}
};
思路二
第一步 分别对字符串进行正序查询和反序查询
第二步 如果所查询的字符下标相等说明此字符只出现了一次。
class Solution {public:int firstUniqChar(string s) {for(int i0; is.size(); i){int index s.find(s[i]);int reverse_index s.rfind(s[i]); if(index reverse_index)return i;}return -1;}
}; 本人实力有限可能对一些地方解释和理解的不够清晰可以自己尝试读代码或者评论区指出错误望海涵欢迎各位大佬在评论区探讨交流
如果本篇对你有帮助的话三连支持一下吧。
感谢大佬们的一键三连 感谢大佬们的一键三连 感谢大佬们的一键三连