买公司的网站,工业和信息化部关于开展加强网站备案管理专项行动的通知,电商网站竞价推广的策略,什么网站可以直接做word文档目录
把字符串转换成整数 反转字符串
字符串中的第一个唯一字符
字符串最后一个单词的长度
找出字符串中第一个只出现一次的字符
字符串相加
字符串最后一个单词长度
字符串相乘
反转字符串3
反转字符串2
验证回文串 把字符串转换成整数 通过遍历字符串并逐位转换…目录
把字符串转换成整数 反转字符串
字符串中的第一个唯一字符
字符串最后一个单词的长度
找出字符串中第一个只出现一次的字符
字符串相加
字符串最后一个单词长度
字符串相乘
反转字符串3
反转字符串2
验证回文串 把字符串转换成整数 通过遍历字符串并逐位转换处理空格、正负号和整数溢出的情况。最终返回转换后的整数。 class Solution {public:int StrToInt(string str) {const int len str.length();if (len 0) return 0;int i 0;while (i len str[i] ) {i; // 排除开头的空格}if (i len) return 0;if (!isdigit(str[i]) str[i] ! str[i] ! -) return 0;bool neg str[i] - ? true : false;i isdigit(str[i]) ? i : i 1;long long ans 0L;while (i len isdigit(str[i])) {ans ans * 10 (str[i] - 0);if (!neg ans INT_MAX) {ans INT_MAX;break;}if (neg ans 1L INT_MAX) {ans 1L INT_MAX;break;}}if (i ! len) return 0; return !neg ? static_castint(ans) : static_castint(-ans);}
}; 首先定义了一个函数 StrToInt该函数接受一个字符串参数 str表示要转换的字符串。 获取字符串的长度并检查长度是否为0。如果长度为0则返回0。 初始化变量 i 为0用于遍历字符串。 使用 while 循环跳过字符串开头的空格将 i 向后移动。 检查 i 是否已经达到字符串的末尾如果是则返回0。 检查 str[i] 是否为数字、正号或负号。如果不是则返回0。 根据 str[i] 的值确定是否为负数并将结果存储在布尔变量 neg 中。 如果 str[i] 不是数字则将 i 向后移动一位。 初始化变量 ans 为0用于存储转换后的整数。 进入循环只要 i 小于字符串的长度且 str[i] 是数字就执行循环体。 在循环体内将 ans 乘以10并加上 str[i] 减去字符 0 的结果以将字符转换为数字。 检查转换后的整数是否超出了 INT_MAX 的范围。如果超出了则将 ans 设置为 INT_MAX 或 1L INT_MAX具体取决于 neg 的值。 将 i 向后移动一位。 循环结束后检查 i 是否等于字符串的长度。如果不相等则表示字符串中包含非数字字符返回0。 根据 neg 的值返回转换后的整数使用 static_castint 进行类型转换。 反转字符串 class Solution {
public:void reverseString(vectorchar s) {reverse(s.begin(),s.end());}
};
字符串中的第一个唯一字符 class Solution {
public:int firstUniqChar(string s) {int count[26]{0};for(auto ch:s){count[ch-a];}for(int i0;is.size();i){if(count[s[i]-a]1)return i;}return -1;}
};
字符串最后一个单词的长度 #include iostream
using namespace std;int main() {string str;getline(cin,str);size_t posstr.rfind( );if(pos!string::npos){coutstr.size()-pos-1endl;}else{coutstr.size()endl;}
}
找出字符串中第一个只出现一次的字符 #include iostream
#include string
using namespace std;int main() {string a;cina;int charCount[256]{0};for(auto e:a){charCount[e];}int s-1;for(auto e:a){if(charCount[e]1){coute;s1;break;}}if(s-1)couts;
} 首先定义了一个字符串变量 a用于接收用户的输入。 创建一个大小为256的整型数组 charCount用于记录每个字符在字符串中出现的次数。初始时所有元素都被初始化为0。 使用 for 循环遍历字符串 a 中的每个字符。 在循环中将当前字符 e 对应的 charCount 数组元素加1以统计字符出现的次数。 初始化变量 s 为-1用于标记是否找到了不重复的字符。 使用另一个 for 循环遍历字符串 a 中的每个字符。 在循环中检查当前字符 e 在 charCount 数组中的值。如果值为1表示该字符只出现了一次即为第一个不重复的字符。 输出该字符并将变量 s 设置为1表示已找到不重复字符。 如果循环结束后 s 仍为-1表示没有找到不重复的字符。 输出变量 s 的值即-1。 字符串相加 class Solution {
public:string addStrings(string num1, string num2) {int end1num1.size()-1;int end2num2.size()-1;int next0;string str;str.reserve(num1.size()num2.size()?num1.size()1:num2.size()1);while(end10||end20){int val1end10?num1[end1]-0:0;int val2end20?num2[end2]-0:0;int ret val1val2next;nextret/10;retret%10;str0ret;--end1,--end2;}if(next1)str1;reverse(str.begin(),str.end());return str;}
}; 首先定义了一个函数 addStrings该函数接受两个字符串参数 num1 和 num2表示要相加的两个数字。 初始化变量 end1 和 end2 分别为 num1 和 num2 的最后一个字符的索引。 初始化变量 next 为0用于记录进位。 创建一个空字符串 str用于存储相加的结果。 根据两个字符串的长度预先分配 str 的容量以避免不必要的内存重新分配。 进入循环只要 end1 或 end2 中至少有一个大于等于0就执行循环体。 在循环体内首先获取 num1 和 num2 当前索引位置的字符并将其转换为对应的数字值。如果已经超出字符串的范围则将其视为0。 将 val1、val2 和 next 相加得到 ret并更新 next 为 ret 除以10的商更新 ret 为 ret 除以10的余数。 将 ret 转换为字符并将其添加到 str 的末尾。 更新 end1 和 end2向前移动一位。 循环结束后如果 next 为1说明最高位有进位将字符 1 添加到 str 的末尾。 将 str 反转得到正确的相加结果。 返回 str 字符串最后一个单词长度 首先介绍一下接下来会用到的读取字符串的函数getline. getline 是 C 标准库中的一个函数用于从输入流中读取一行字符串。它有以下几个特点 读取一行字符串getline 函数会读取输入流中的一行字符串直到遇到换行符\n) 或者文件结束符EOF。它将读取的字符串存储到指定的变量中。 处理空格字符与 cin 不同getline 函数会将空格字符包括空格、制表符等视为普通字符而不是作为分隔符。这意味着 getline 可以读取包含空格的字符串而不会在空格处停止读取。 保留换行符getline 函数会将换行符\n) 从输入流中读取并存储在字符串中即使它是一行的结尾。这与 cin 不同cin 会将换行符视为分隔符并从输入流中丢弃。 指定分隔符除了默认的换行符作为分隔符外getline 函数还可以接受一个可选的分隔符参数用于指定其他字符作为行的结束标志。例如可以使用 getline(cin, str, ,) 来读取以逗号分隔的字符串。 #include iostream
using namespace std;int main() {string str;getline(cin,str);size_t posstr.rfind( );if(pos!string::npos){coutstr.size()-pos-1endl;}else{coutstr.size()endl;}
}
字符串相乘 class Solution {
public:string multiply(string num1, string num2) {if(num10||num20)return 0;int n1num1.size(),n2num2.size();string result(n1n2,0);for (int i n1 - 1; i 0; i--) {for (int j n2 - 1; j 0; j--) {int product (num1[i] - 0) * (num2[j] - 0) (result[i j 1] - 0);result[i j 1] product % 10 0;result[i j] product / 10;}}size_t startpos result.find_first_not_of(0);if (string::npos ! startpos) {return result.substr(startpos);}return 0;}
};
反转字符串3 class Solution {
public:string reverseWords(string s) {int poss.find( );int start0;while(pos!string::npos){reverse(s.begin()start,s.begin()pos);startpos1;poss.find( ,pos1); }reverse(s.begin()start,s.end());return s;}
};
反转字符串2 class Solution {
public:string reverseStr(string s, int k) {auto start s.begin();while (start s.end()) {if (start k s.end()) {reverse(start, start k);} else {reverse(start, s.end());}start 2 * k;}return s;}
};
验证回文串 class Solution {
public:bool isPalindrome(string s) {string judge;for(char c:s){if(isalnum(c))judgetolower(c);}int left0;int rightjudge.size()-1;while(leftright){if(judge[left]!judge[right]){return false;}left;--right;}return true;}
};