深圳电商网络网站怎么写一个网站程序
- 作者: 五速梦信息网
- 时间: 2026年04月20日 09:23
当前位置: 首页 > news >正文
深圳电商网络网站,怎么写一个网站程序,怎样查看wordpress用的什么主题,想做百度推广找谁总目录#xff1a;剑指offer#xff08;专项突破#xff09;—目录-CSDN博客 1.字符串的基本知识
C语言中#xff1a;
函数名功能描述strcpy(s1, s2)将字符串s2复制到字符串s1中#xff0c;包括结束符\0#xff0c;要求s1有足够空间容纳s2的内容。strncpy(s1, s2, n)…总目录剑指offer专项突破—目录-CSDN博客 1.字符串的基本知识
C语言中
函数名功能描述strcpy(s1, s2)将字符串s2复制到字符串s1中包括结束符\0要求s1有足够空间容纳s2的内容。strncpy(s1, s2, n)把s2中最多n个字符复制到s1中。若s2的长度小于n则s1中剩余部分用\0填充若s2长度大于等于n则s1不会以\0结尾需手动添加。strcat(s1, s2)将字符串s2连接到字符串s1的末尾s1要有足够空间容纳连接后的内容会自动添加结束符\0。strncat(s1, s2, n)把s2中最多n个字符连接到s1的末尾然后添加\0s1要预留足够空间。strcmp(s1, s2)比较s1和s2两个字符串的大小按照字典序进行比较。若s1小于s2返回负整数若s1等于s2返回 0若s1大于s2返回正整数。strncmp(s1, s2, n)比较s1和s2中前n个字符的大小按照字典序比较返回值规则同strcmp。strlen(s)计算字符串s的长度不包括结束符\0返回字符串中字符的个数。strchr(s, c)在字符串s中查找字符c第一次出现的位置若找到返回指向该字符的指针若没找到返回nullptr。strrchr(s, c)在字符串s中查找字符c最后一次出现的位置若找到返回指向该字符的指针若没找到返回nullptr。strstr(s1, s2)在字符串s1中查找字符串s2第一次出现的位置若找到返回指向s2在s1中起始位置的指针若没找到返回nullptr。
C中
函数名功能描述size()返回字符串中字符的个数。length()获取字符串的长度即字符个数。empty()判断字符串是否为空为空返回true否则返回false。clear()清空字符串内容使其长度变为 0。push_back©在字符串末尾添加一个字符c。pop_back()删除字符串末尾的一个字符。compare(s2)比较当前字符串和s2的大小按照字典序比较返回值规则类似strcmp函数小于返回负整数等于返回 0大于返回正整数。substr(pos, n)从索引pos位置开始提取连续的n个字符若n省略则提取从pos开始到末尾的所有字符返回提取出来的子字符串。find(s2, pos)从索引pos位置开始查找字符串s2第一次出现的位置若找到返回位置索引若没找到返回std::string::npos一个特殊的表示未找到的值若pos省略则从开头查找。rfind(s2, pos)从索引pos位置开始查找字符串s2最后一次出现的位置返回值规则同find函数若pos省略则从末尾往前查找。replace(pos, n, s2)将从索引pos开始的n个字符替换成字符串s2若n省略则替换从pos开始到末尾的所有字符。
2.双指针 第2章用两个指针来定位一个子数组其中一个指针指向数组的第1个数字另一个指针指向数组的最后一个数字那么两个指针之间所包含的就是一个子数组。 如果将字符串看成一个由字符组成的数组那么也可以用两个指针来定位一个子字符串其中一个指针指向字符串的第1个字符另一个指针指向字符串的最后一个字符两个指针之间所包含的就是一个子字符串。 LCR 014. 字符串的排列 - 力扣LeetCode
题解滑动窗口 数组模拟哈希表 cnt1 统计字符串 s1 中每个字符出现的次数然后遍历字符串 s2维护一个窗口大小为 m 的滑动窗口。 数组模拟哈希表 cnt2 统计窗口内每个字符出现的次数当 cnt1cnt2 时说明窗口内的字符及其个数与字符串 s1 相同返回 true 即可。 否则遍历结束后返回 false。 时间复杂度 (mn×∣Σ∣)空间复杂度 O(∣Σ∣)。其中 m 和 n 分别为字符串 s1 和 s2 的长度而 ∣Σ∣ 为字符集的大小本题中∣Σ∣26。 class Solution
{
public:bool checkInclusion(string s1, string s2) {int m s1.size(), n s2.size();if (m n)return false;vectorint cnt1(26), cnt2(26);for (int i 0; i m; i) {cnt1[s1[i] - a];cnt2[s2[i] - a];}if (cnt1 cnt2)return true;for (int i m; i n; i) {cnt2[s2[i] - a];–cnt2[s2[i - m] - a];if (cnt1 cnt2)return true;}return false;}
}; 优化 每次加入和移除一个字符时都需要比较两个哈希表时间复杂度较高。我们可以维护一个变量 k表示两个大小为 m 的字符串中有多少种字符出现的个数不同。当 k0 时说明两个字符串中的字符个数相同。 时间复杂度 O(mn∣Σ∣)空间复杂度 O(∣Σ∣)。其中 m 和 n 分别为字符串 s1 和 s2 的长度而 ∣Σ∣ 为字符集的大小本题中 ∣Σ∣26。 class Solution
{
public:bool checkInclusion(string s1, string s2) {int m s1.size(), n s2.size();if (m n)return false;vectorint cnt(26);for (int i 0; i m; i) {–cnt[s1[i] - a];cnt[s2[i] - a];}int k 0;for (int x : cnt)if (x ! 0) k;if (k 0)return true;for (int i m; i n; i) {int a s2[i - m] - a;int b s2[i] - a;if (cnt[a] 0) k;– cnt[a];if (cnt[a] 0)– k;if (cnt[b] 0) k; cnt[b];if (cnt[b] 0)– k;if (k 0)return true;}return false;}
};
LCR 015. 找到字符串中所有字母异位词 - 力扣LeetCode
题解滑动窗口
同LCR 014优化方式也一样添加一个差异计数器
class Solution
{
public:vectorint findAnagrams(string s, string p) {int m s.size();int n p.size();vectorint ans;if (m n)return ans;vectorint cnt1(26), cnt2(26);for (int i 0; i n; i) {cnt1[s[i] - a];cnt2[p[i] - a];}if (cnt1 cnt2)ans.push_back(0);for (int i n; i m; i) {cnt1[s[i] - a];–cnt1[s[i - n] - a];if (cnt1 cnt2)ans.push_back(i - n 1);}return ans;}
};
LCR 016. 无重复字符的最长子串 - 力扣LeetCode
题解双指针 哈希表 遍历字符串 s对于当前遍历到的字符 s[r]如果 s[r] 在 [l,r) 范围内有与 s[r] 相同的字符我们就不断地向右移动指针 l直到 ss[s[r]] 为 false此时 [l,r) 中没有任何与 s[r] 相同的字符我们就找到了以字符 s[r] 为结尾的最长子串。更新最长子串的长度最终返回答案。 时间复杂度 O(n)空间复杂度 O(∣Σ∣)其中 n 为字符串 s 的长度而 Σ 表示字符集本题中字符集为所有 ASCII 码在 [0,128) 内的字符即∣Σ∣128。 class Solution
{
public:int lengthOfLongestSubstring(string s) {bool ss[128] {false};int ans 0;for (int l 0, r 0; r s.size(); r) {while (ss[s[r]])ss[s[l]] false;ss[s[r]] true;ans max(ans, r - l 1);}return ans;}
};
LCR 017. 最小覆盖子串 - 力扣LeetCode
题解滑动窗口 外层while循环 - 窗口扩张 while(r s.size())这个循环的条件是只要r指针还没遍历完整个字符串s就持续向右移动r指针来扩展窗口模拟窗口不断向右滑动去尝试包含t中所有字符的过程。char i s[r];每次获取r指针指向的字符并将r指针后移一位来扩大窗口范围。if(curHash[i] baseHash[i])将该字符在curHash数组中的出现次数加 1然后判断加 1 后的次数是否小于等于其在baseHash数组中记录的t里该字符出现的次数。若成立则将计数器count加 1。内层while循环 - 窗口收缩 while(count t.size())当count的值等于字符串t的长度时意味着当前窗口已经包含了t中的所有字符此时就进入内层循环来尝试收缩窗口看能否找到更小的符合条件的窗口。if(r-l minLen)判断当前窗口的长度r - l是否小于已记录的最小窗口长度minLen如果是则更新k为当前窗口的起始位置l更新minLen为当前窗口的长度即找到了一个更短的包含t所有字符的窗口。char o s[l];从窗口的左边开始收缩获取要移出窗口的字符并将l指针后移一位。if(curHash[o]– baseHash[o])将该字符在curHash数组中的出现次数减 1然后判断减 1 后的次数是否小于等于其在baseHash数组中记录的t里该字符出现的次数。若成立则将计数器count减 1。 两个指针 l 和 r 都是从最左端向最右端移动且 l 的位置一定在r 的左边或重合。注意本题虽然在 while 循环里出现了一个 while 循环但是因为内循环负责移动 l 指针且 l 只会从左到右移动一次因此总时间复杂度仍然是 O(n)。 class Solution
{
public:string minWindow(string s, string t){//先统计字符情况int baseHash[128] { 0 }, curHash[128] { 0 };for(auto ch : t){baseHash[ch];}int k 0, minLen s.size() 1;//k:记录窗口起始位置 minLen:记录最小窗口长度int l 0, r 0, count 0;//外层循环窗口扩张while(r s.size()){char i s[r];if(curHash[i] baseHash[i]){count;}//内层循环窗口收缩while(count t.size()){if(r-l minLen){k l;minLen r-l;}char o s[l];if(curHash[o]– baseHash[o]){–count;}}}return minLen s.size() ? : s.substr(k, minLen);}
};
3.回文字符串
LCR 018. 验证回文串 - 力扣LeetCode
题解双指针
时间复杂度 O(n)。空间复杂度 O(1)。
class Solution
{
public:bool isPalindrome(string s) {int l 0, r s.size() - 1;while (l r) {while (l r !isalnum(s[l])) l;while (l r !isalnum(s[r]))– r;if (tolower(s[l]) ! tolower(s[r]))return false; l;– r;}return true;}
};
LCR 019. 验证回文串 II - 力扣LeetCode
题解双指针 递归
时间复杂度 O(n)。空间复杂度 O(1)。
class Solution
{
public:bool validPalindrome(string s) {auto check {for (; i j; i, –j)if (s[i] ! s[j])return false;return true;};for (int i 0, j s.size() - 1; i j; i, –j) if (s[i] ! s[j])return check(i 1, j) || check(i, j - 1);return true;}
};
LCR 020. 回文子串 - 力扣LeetCode
题解1从中心向两侧扩展回文串 外层循环遍历字符串每一位 内层循环分别计算当前字符为中心点及当前字符与下一位字符为中心点 时间复杂度 O(n^2)。 class Solution
{
public:int countSubstrings(string s) {int ans 0;auto f - int {int cnt 0;for (; i 0 j s.size() s[i] s[j]; – i, j)cnt;return cnt;};for (int i 0; i s.size(); i)ans f(i, i) f(i, i 1);return ans;}
};
题解2Manacher 算法 在 Manacher 算法的计算过程中用 p[i]−1 表示以第 i 位为中心的最大回文长度以第 i 位为中心的回文串数量为 。 时间复杂度 O(n)空间复杂度 O(n)。 class Solution
{
public:int countSubstrings(string s) {int n s.size();string t !#;for (const char c: s) {t c;t #;}n t.size();t $;auto f vector int (n);int mid 0, rMax 0, ans 0;for (int i 1; i n; i) {// 初始化 f[i]fi ? min(rMax - i 1, f[2 * mid - i]) : 1;// 中心拓展while (t[i f[i]] t[i - f[i]]) f[i];if (i f[i] - 1 rMax) {mid i;rMax i f[i] - 1;}// 当前贡献为 (f[i] - 1) / 2 上取整ans (f[i] / 2);}return ans;}
};
4.小结
变位词和回文是很有意思的文字游戏。如果两个字符串包含的字符及每个字符出现的次数都相同只是字符出现的顺序不同那么它们就是一组变位词。通常可以用一个哈希表来统计每个字符出现的次数有了哈希表就很容易判断两个字符串是不是一组变位词。
回文是一类特殊的字符串。不管是从前往后还是从后往前读取其每一个字符得到的内容都是一样的。通常可以用两个指针来判断一个字符串是不是回文要么两个指针从字符串的两端开始向中间移动要么两个指针从中间开始向两端移动。
- 上一篇: 深圳电商平台网站网站建设要会哪些方面
- 下一篇: 深圳电商网站建设公司设计网站的制作框架
相关文章
-
深圳电商平台网站网站建设要会哪些方面
深圳电商平台网站网站建设要会哪些方面
- 技术栈
- 2026年04月20日
-
深圳的网站建设公司 湖南岚鸿陕西省建设网三类人员题库
深圳的网站建设公司 湖南岚鸿陕西省建设网三类人员题库
- 技术栈
- 2026年04月20日
-
深圳搭建网站公司外链工具下载
深圳搭建网站公司外链工具下载
- 技术栈
- 2026年04月20日
-
深圳电商网站建设公司设计网站的制作框架
深圳电商网站建设公司设计网站的制作框架
- 技术栈
- 2026年04月20日
-
深圳电商网站制作百度提交入口网址是什么
深圳电商网站制作百度提交入口网址是什么
- 技术栈
- 2026年04月20日
-
深圳电子商城网站设计html视频播放器
深圳电子商城网站设计html视频播放器
- 技术栈
- 2026年04月20日
