C++比较字符串大小(自己实现strcmp()函数)

您所在的位置:网站首页 c语言char比大小 C++比较字符串大小(自己实现strcmp()函数)

C++比较字符串大小(自己实现strcmp()函数)

2023-09-04 10:02| 来源: 网络整理| 查看: 265

详见: https://www.nowcoder.com/practice/963e455fdf7c4a4a997160abedc1951b?tpId=225&tags=&title=&difficulty=0&judgeStatus=0&rp=0

文章目录 1.移动指针法2.循环3.对比各个字符串(数组)的总ascii码(推荐这个)

1.移动指针法

但这种方法只适用于二个字符数组中从头开始,有几个相同字符的字符数组,不适用于其它情况。 时间复杂度:O(n),n为较短的字符串的长度 空间复杂度:O(1),只有指针,无额外空间

输入mystrcmp函数的是两个字符数组指针,我们对两个指针不断往后移,并比较找到第一个两个指针指向元素不同的地方,然后直接根据那个位置字符相减(对比二个字符)得到返回结果的正负或者0.

#include using namespace std; int mystrcmp(const char* src, const char* dst); int main() { char s1[100] = { 0 }; char s2[100] = { 0 }; cin.getline(s1, sizeof(s1)); cin.getline(s2, sizeof(s2)); int ret = mystrcmp(s1, s2); cout //找到两个字符串第一个不同的字符 src++; dst++; } if (*src > *dst) //根据字符大小来返回.例如此时*src是字符`w`,*dsc为``空`,代表0个字符。则*src > *dst。 return 1; else if (*src 0 }; char s2[100] = { 0 }; cin.getline(s1, sizeof(s1)); cin.getline(s2, sizeof(s2)); int ret = mystrcmp(s1, s2); cout //如果src当前字符小于dst,说明src小于dst,返回-1 if (src[i] return 1; } //如果src当前字符等于dst,两指针后移 else { i++; j++; } } //如果src后面还有字符,返回1 if (i return -1; } else{ return 0; } return 0; // while () } 3.对比各个字符串(数组)的总ascii码(推荐这个)

首先明确是比较字符串大小而不是比较字符串长度,由于文中使用的是字符数组来存储字符串,所以可将字符串的每一个字符读取,得到ASCII码,分别加合起来在再比较就可解决该问题。

#include // #include #include using namespace std; int mystrcmp(const char* src, const char* dst); int main() { char s1[100] = { 0 }; char s2[100] = { 0 }; cin.getline(s1, sizeof(s1)); cin.getline(s2, sizeof(s2)); int ret = mystrcmp(s1, s2); cout sum_src += (int)src[i]; } for(int i=0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3