商城网站seo,国外最具创意的wordpress博客,百度一下官网首页网址,淘宝客如何建设自己的网站1.返回字符串中第一个唯一的字符
1.1题目描述
给定一个字符串s #xff0c;找到它的第一个不重复的字符#xff0c;并返回它的索引 。如果不存在#xff0c;则返回 -1 。
示例#xff1a; 1.2思路
这里提供两种思路#xff1a;第一种是利用哈希表#xff0c;先遍历一…1.返回字符串中第一个唯一的字符
1.1题目描述
给定一个字符串s 找到它的第一个不重复的字符并返回它的索引 。如果不存在则返回 -1 。
示例 1.2思路
这里提供两种思路第一种是利用哈希表先遍历一遍字符串存到数组中a下标为0,后面字母一次加1遍历完后对字符串进行遍历再那去与数组该位置比较是否为1为返回该位置。注意第二遍遍历时不能遍历数组要不然可能出现第一次唯一出现的字符为z但后面又出现a也是唯一出现但不是第一个但这时候就会返回a的位置。
第二种是先遍历利用正序反序寻找利用find函数这个函数是返回传入要找的字符第一次出现的下标默认从0下标开始从前向后找rfind函数这个函数是返回传入要找的字符第一次出现的下标默认开始从后向前找找到是否为同一个位置如果是那说明这个字符只出现了一次就直接返回如果遍历完没找到就直接返回-1。
1.3代码
方法一
class Solution {
public:int firstUniqChar(string s) {int i0;int count[26]{0};while(is.size()){count[s[i]-a];i;}for(int j0;js.size();j){if(count[s[j]-a]1)return j;}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;}}; 2把字符串转换成整数
2.1题目描述
请你来实现一个 myAtoi(string s) 函数使其能将字符串转换成一个 32 位有符号整数类似 C/C 中的 atoi 函数。
函数 myAtoi(string s) 的算法如下
读入字符串并丢弃无用的前导空格
检查下一个字符假设还未到字符末尾为正还是负号读取该字符如果有。 确定最终结果是负数还是正数。 如果两者都不存在则假定结果为正。
读入下一个字符直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。
将前面步骤读入的这些数字转换为整数即123 - 123 0032 - 32。如果没有读入数字则整数为 0 。必要时更改符号从步骤 2 开始。
如果整数数超过 32 位有符号整数范围 [−2^31, 2^31 − 1] 需要截断这个整数使其保持在这个范围内。具体来说小于 −231 的整数应该被固定为 −2^31 大于 2^31 − 1 的整数应该被固定为 2^31 − 1 。
返回整数作为最终结果。
2.2思路
根据题目要求要排除字符串前面的空格其次就是判断第一个符号位是否为负所以这里定义一个下标遇到就然后从这个位置开始读如果不是0~9字符就直接跳出循环其次还要注意是否已经超出整型范围所以可以定义这个数的时候用long long再去和INT_MAX,INT_MIN比较如果超出范围就直接输出这个边界值没有超出范围就返回这个值。
2.3代码
class Solution {
public:int myAtoi(string str) {int i0;while(str[i] ){i;}int flag1;if(str[i]-){flag-1;}if(str[i]-||str[i])i;long long sum0;for(;istr.size();i){if(str[i]0str[i]9){ sumsum*10(str[i]-0);if(sumINT_MAX)return flag1?INT_MAX:INT_MIN;}elsebreak;}int retsum*flag;return ret;}
};